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. ]
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,
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);
}
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]);