[master] cf17fc1 Close std{in|out|err} before invoking Eric.
Poul-Henning Kamp
phk at FreeBSD.org
Sat Jan 7 11:39:05 CET 2017
commit cf17fc1671f44b58cb81f9eb14b21f13139593f1
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Sat Jan 7 10:37:20 2017 +0000
Close std{in|out|err} before invoking Eric.
diff --git a/bin/varnishd/mgt/mgt_main.c b/bin/varnishd/mgt/mgt_main.c
index 5242370..11d1625 100644
--- a/bin/varnishd/mgt/mgt_main.c
+++ b/bin/varnishd/mgt/mgt_main.c
@@ -575,6 +575,36 @@ mgt_eric(void)
exit(-1);
}
+static void
+mgt_eric_im_done(int eric_fd, unsigned u)
+{
+ int fd;
+
+ if (eric_fd < 0)
+ return;
+
+ if (u == 0)
+ u = ERIC_MAGIC;
+
+ fd = open("/dev/null", O_RDONLY);
+ assert(fd >= 0);
+ assert(dup2(fd, STDIN_FILENO) == STDIN_FILENO);
+ AZ(close(fd));
+
+ fd = open("/dev/null", O_WRONLY);
+ assert(fd >= 0);
+ assert(dup2(fd, STDOUT_FILENO) == STDOUT_FILENO);
+ AZ(close(fd));
+
+ fd = open("/dev/null", O_WRONLY);
+ assert(fd >= 0);
+ assert(dup2(fd, STDERR_FILENO) == STDERR_FILENO);
+ AZ(close(fd));
+
+ assert(write(eric_fd, &u, sizeof u) == sizeof u);
+ AZ(close(eric_fd));
+}
+
/*--------------------------------------------------------------------*/
int
@@ -906,12 +936,7 @@ main(int argc, char * const *argv)
u = MGT_Run();
- if (eric_fd > 0) {
- if (u == 0)
- u = ERIC_MAGIC;
- assert(write(eric_fd, &u, sizeof u) == sizeof u);
- AZ(close(eric_fd));
- }
+ mgt_eric_im_done(eric_fd, u);
o = vev_schedule(mgt_evb);
if (o != 0)
More information about the varnish-commit
mailing list