Share a single write-pipe handle for piped stderr logging, this
prevents an extra logging process from hanging around after the
initial config-phase.
Reviewed by: rpluem, wrowe
Submitted by: wrowe
Reviewed by: jim
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@603921
13f79535-47bb-0310-9956-
ffa450edef68
RELEASE SHOWSTOPPERS:
- * core log.c: Authored and Reviewed by both rplume and wrowe within
- the same 10 minutes, share only a single apr_file_t/fd between the
- stderr and server_main->error_log to prevent any lingering write
- handles from hanging around in unexpected ways.
- http://svn.apache.org/viewvc?view=rev&revision=580437
- PR 43491, solution validated by reporter
- +1: wrowe, rpluem, jim
-
* core log.c: Work around possible solutions rejected by apr for
the old implementation of apr_proc_create(), and explicitly pass
the output and error channels to all log processes created.
apr_pool_destroy(stderr_pool);
stderr_pool = stderr_p;
replace_stderr = 0;
+ /*
+ * Now that we have dup'ed s_main->error_log to stderr_log
+ * close it and set s_main->error_log to stderr_log. This avoids
+ * this fd being inherited by the next piped logger who would
+ * keep open the writing end of the pipe that this one uses
+ * as stdin. This in turn would prevent the piped logger from
+ * exiting.
+ */
+ apr_file_close(s_main->error_log);
+ s_main->error_log = stderr_log;
}
}
/* note that stderr may still need to be replaced with something