From 01604b4638d4206b10b2e94d9a885db3f98d7a57 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 28 Dec 2007 15:04:47 +0000 Subject: [PATCH] Remove existing showstopper git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@607255 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 7 ------- server/log.c | 15 ++++++++++++--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/STATUS b/STATUS index 8f61b080b97..39b71f2151f 100644 --- a/STATUS +++ b/STATUS @@ -112,13 +112,6 @@ CURRENT RELEASE NOTES: RELEASE SHOWSTOPPERS: - * 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. - This goes all the way back to piped logs failing to run on win32. - Not in or needed at trunk/, as apr 1.3.0 has the proper fix. - http://people.apache.org/~wrowe/httpd-2.0-2.2-procattr-bugfix-log.c.patch - +1: wrowe, rpluem, jim PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] diff --git a/server/log.c b/server/log.c index f5d2228f579..d62e73ecd49 100644 --- a/server/log.c +++ b/server/log.c @@ -267,7 +267,7 @@ static int log_child(apr_pool_t *p, const char *progname, apr_status_t rc; apr_procattr_t *procattr; apr_proc_t *procnew; - apr_file_t *errfile; + apr_file_t *outfile, *errfile; if (((rc = apr_procattr_create(&procattr, p)) == APR_SUCCESS) && ((rc = apr_procattr_io_set(procattr, @@ -284,8 +284,11 @@ static int log_child(apr_pool_t *p, const char *progname, pname = apr_pstrdup(p, args[0]); procnew = (apr_proc_t *)apr_pcalloc(p, sizeof(*procnew)); - if (dummy_stderr) { - if ((rc = apr_file_open_stdout(&errfile, p)) == APR_SUCCESS) + if ((rc = apr_file_open_stdout(&outfile, p)) == APR_SUCCESS) { + rc = apr_procattr_child_out_set(procattr, outfile, NULL); + if (dummy_stderr) + rc = apr_procattr_child_err_set(procattr, outfile, NULL); + else if ((rc = apr_file_open_stderr(&errfile, p)) == APR_SUCCESS) rc = apr_procattr_child_err_set(procattr, errfile, NULL); } @@ -888,6 +891,12 @@ static apr_status_t piped_log_spawn(piped_log *pl) else { char **args; const char *pname; + apr_file_t *outfile, *errfile; + + if ((status = apr_file_open_stdout(&outfile, pl->p)) == APR_SUCCESS) + status = apr_procattr_child_out_set(procattr, outfile, NULL); + if ((status = apr_file_open_stderr(&errfile, pl->p)) == APR_SUCCESS) + status = apr_procattr_child_err_set(procattr, errfile, NULL); apr_tokenize_to_argv(pl->program, &args, pl->p); pname = apr_pstrdup(pl->p, args[0]); -- 2.47.2