From: Jim Jagielski Date: Fri, 28 Dec 2007 15:04:47 +0000 (+0000) Subject: Remove existing showstopper X-Git-Tag: 2.0.62~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=01604b4638d4206b10b2e94d9a885db3f98d7a57;p=thirdparty%2Fapache%2Fhttpd.git Remove existing showstopper git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@607255 13f79535-47bb-0310-9956-ffa450edef68 --- 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]);