kqueue(2) is currently broken when used with /dev/null and a few other

devices.

An upcoming fix for some problems with the client stdout/stderr handling
relies on it working, so make tmux force libevent to use poll(2) via
EVENT_NOKQUEUE, until we have fixed kqueue.
This commit is contained in:
Nicholas Marriott 2010-07-24 19:25:31 +00:00
parent a97b7ad11c
commit bf09b00fe9
2 changed files with 6 additions and 0 deletions

View File

@ -139,8 +139,11 @@ server_start(char *path)
fatal("daemon failed"); fatal("daemon failed");
/* event_init() was called in our parent, need to reinit. */ /* event_init() was called in our parent, need to reinit. */
if (setenv("EVENT_NOKQUEUE", "1", 1) != 0)
fatal("setenv");
if (event_reinit(ev_base) != 0) if (event_reinit(ev_base) != 0)
fatal("event_reinit failed"); fatal("event_reinit failed");
unsetenv("EVENT_NOKQUEUE");
clear_signals(); clear_signals();
logfile("server"); logfile("server");

3
tmux.c
View File

@ -532,7 +532,10 @@ main(int argc, char **argv)
exit(1); exit(1);
} }
if (setenv("EVENT_NOKQUEUE", "1", 1) != 0)
fatal("setenv");
ev_base = event_init(); ev_base = event_init();
unsetenv("EVENT_NOKQUEUE");
set_signals(main_signal); set_signals(main_signal);
/* Initialise the client socket/start the server. */ /* Initialise the client socket/start the server. */