]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Remove existing showstopper
authorJim Jagielski <jim@apache.org>
Fri, 28 Dec 2007 15:04:47 +0000 (15:04 +0000)
committerJim Jagielski <jim@apache.org>
Fri, 28 Dec 2007 15:04:47 +0000 (15:04 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@607255 13f79535-47bb-0310-9956-ffa450edef68

STATUS
server/log.c

diff --git a/STATUS b/STATUS
index 8f61b080b97599e1a7695c9b11f917e1faf39cf6..39b71f2151fea5af61f0839a5399b995a8a54abe 100644 (file)
--- 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. ]
index f5d2228f579009d18b8967925b33c62db00f4646..d62e73ecd4966d4414927efb4b32ab28d0db993f 100644 (file)
@@ -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]);