From 50e3e3e72f97c32cf868efb580ffed4772e61b2d Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 21 Mar 2018 08:15:15 +0000 Subject: [PATCH] Remove EVENT_* variables from environment after initializing libevent so they are not carried into child processes; from Henry Qin. --- osdep-darwin.c | 8 +++++++- osdep-freebsd.c | 7 ++++++- osdep-linux.c | 7 ++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/osdep-darwin.c b/osdep-darwin.c index 9956ab45..5d69cdda 100644 --- a/osdep-darwin.c +++ b/osdep-darwin.c @@ -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); } diff --git a/osdep-freebsd.c b/osdep-freebsd.c index 067ba565..61f3f507 100644 --- a/osdep-freebsd.c +++ b/osdep-freebsd.c @@ -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); } diff --git a/osdep-linux.c b/osdep-linux.c index 42712dea..5f0d9352 100644 --- a/osdep-linux.c +++ b/osdep-linux.c @@ -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); }