Remove EVENT_* variables from environment after initializing libevent so they

are not carried into child processes; from Henry Qin.
This commit is contained in:
Nicholas Marriott 2018-03-21 08:15:15 +00:00
parent c8a706117f
commit 50e3e3e72f
3 changed files with 19 additions and 3 deletions

View File

@ -88,11 +88,17 @@ osdep_get_cwd(int fd)
struct event_base *
osdep_event_init(void)
{
struct event_base *base;
/*
* On OS X, kqueue and poll are both completely broken and don't
* work on anything except socket file descriptors (yes, really).
*/
setenv("EVENT_NOKQUEUE", "1", 1);
setenv("EVENT_NOPOLL", "1", 1);
return (event_init());
base = event_init();
unsetenv("EVENT_NOKQUEUE");
unsetenv("EVENT_NOPOLL");
return (base);
}

View File

@ -193,10 +193,15 @@ osdep_get_cwd(int fd)
struct event_base *
osdep_event_init(void)
{
struct event_base *base;
/*
* On some versions of FreeBSD, kqueue doesn't work properly on tty
* file descriptors. This is fixed in recent FreeBSD versions.
*/
setenv("EVENT_NOKQUEUE", "1", 1);
return (event_init());
base = event_init();
unsetenv("EVENT_NOKQUEUE");
return (base);
}

View File

@ -92,7 +92,12 @@ osdep_get_cwd(int fd)
struct event_base *
osdep_event_init(void)
{
struct event_base *base;
/* On Linux, epoll doesn't work on /dev/null (yes, really). */
setenv("EVENT_NOEPOLL", "1", 1);
return (event_init());
base = event_init();
unsetenv("EVENT_NOEPOLL");
return (base);
}