From: Bill Stoddard Date: Fri, 27 Aug 2004 18:46:52 +0000 (+0000) Subject: Win32: Fix stranded piped loggers on apache -k start,restart,config,install X-Git-Tag: STRIKER_2_0_51_RC1^2~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=668552ee94484175c98dc0b65495860019f385e9;p=thirdparty%2Fapache%2Fhttpd.git Win32: Fix stranded piped loggers on apache -k start,restart,config,install git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/APACHE_2_0_BRANCH@104859 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 73d0e499cfb..57ac361ae3a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,10 @@ Changes with Apache 2.0.51 + *) Win32: apache -k start|restart|install|config can leave stranded + piped logger processes (eg, rotatelogs.exe) due to improper + server shutdown on these code paths. + [Bill Stoddard] + *) SECURITY: CAN-2004-0751 (cve.mitre.org) mod_ssl: Fix a segfault in the SSL input filter which could be triggered if using "speculative" mode, for instance by a diff --git a/STATUS b/STATUS index 579b23b70d7..e5c9d100e27 100644 --- a/STATUS +++ b/STATUS @@ -1,5 +1,5 @@ APACHE 2.0 STATUS: -*-text-*- -Last modified at [$Date: 2004/08/27 16:08:31 $] +Last modified at [$Date: 2004/08/27 18:46:51 $] Release: @@ -73,11 +73,6 @@ PATCHES TO BACKPORT FROM 2.1 [ please place file names and revisions from HEAD here, so it is easy to identify exactly what the proposed changes are! ] - *) Win32: Orderly shutdown of the command process after apache -k start,restart,config, - install to prevent stranded piped logger processes. - http://cvs.apache.org/viewcvs.cgi/httpd-2.0/server/mpm/winnt/mpm_winnt.c?r1=1.311&r2=1.312 - +1: stoddard, trawick, nd - *) EOC bucket handling fix for core_output_filter (prevents possible variable use- after-free since .49). http://cvs.apache.org/viewcvs.cgi/httpd-2.0/server/core.c?r1=1.276&r2=1.277 diff --git a/server/mpm/winnt/mpm_winnt.c b/server/mpm/winnt/mpm_winnt.c index aa52706c874..1289ce7e72d 100644 --- a/server/mpm/winnt/mpm_winnt.c +++ b/server/mpm/winnt/mpm_winnt.c @@ -1401,11 +1401,15 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt if (!strcasecmp(signal_arg, "install")) { rv = mpm_service_install(ptemp, inst_argc, inst_argv, 0); - exit (rv); + apr_pool_destroy(s->process->pool); + apr_terminate(); + exit(rv); } if (!strcasecmp(signal_arg, "config")) { rv = mpm_service_install(ptemp, inst_argc, inst_argv, 1); - exit (rv); + apr_pool_destroy(s->process->pool); + apr_terminate(); + exit(rv); } if (!strcasecmp(signal_arg, "start")) { @@ -1417,12 +1421,16 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt lr->active = 0; } rv = mpm_service_start(ptemp, inst_argc, inst_argv); - exit (rv); + apr_pool_destroy(s->process->pool); + apr_terminate(); + exit(rv); } if (!strcasecmp(signal_arg, "restart")) { mpm_signal_service(ptemp, 1); - exit (rv); + apr_pool_destroy(s->process->pool); + apr_terminate(); + exit(rv); } if (parent_pid == my_pid)