dgaudet 98/01/13 13:19:11
Modified: . STATUS src CHANGES src/main http_main.c Log: Brian says: This patch cleans up some problems with termination in OS/2. There are two issues fixed here: 1) Fixes the 'kill process tree' signal. Before this fix the children were only being killed after the first time out causing lots of warnings in the error log. 2) Allows a Ctrl-C to be used to cleanly shut down the server by a) Catching SIGINT and treating it like a SIGTERM b) Ensuring the SIGINT is sent to the parent process Submitted by: Brian Havard <[EMAIL PROTECTED]> Reviewed by: Dean Gaudet, Jim Jagielski Revision Changes Path 1.81 +1 -4 apachen/STATUS Index: STATUS =================================================================== RCS file: /export/home/cvs/apachen/STATUS,v retrieving revision 1.80 retrieving revision 1.81 diff -u -r1.80 -r1.81 --- STATUS 1998/01/13 16:20:35 1.80 +++ STATUS 1998/01/13 21:19:06 1.81 @@ -77,6 +77,7 @@ * Doug's [PATCH] add -c and -C switches (take 3) * Paul's WIN32: patch to allow for Doug's -c option * Dean's [PATCH] unneeded pstrdup()s (in table_*() calls) + * Brian Havard's [Patch] OS/2 - fix up shut down Available Patches: @@ -101,10 +102,6 @@ * Dean's [PATCH] yet another slow function <[EMAIL PROTECTED]> Status: Dean +1, Jim +1, Martin +1, Paul +1 - - * Brian Havard's [Patch] OS/2 - fix up shut down - <[EMAIL PROTECTED]> - Status: Dean +1, Jim +1 * Martin's [PATCH] mod_speling [300] Multiple Choices bug (Take 2) Submitted by: Soeren Ziehe <[EMAIL PROTECTED]> 1.564 +4 -1 apachen/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apachen/src/CHANGES,v retrieving revision 1.563 retrieving revision 1.564 diff -u -r1.563 -r1.564 --- CHANGES 1998/01/11 20:55:16 1.563 +++ CHANGES 1998/01/13 21:19:07 1.564 @@ -1,5 +1,8 @@ Changes with Apache 1.3b4 + *) PORT: Fix problem killing children when terminating. Allow ^C + to shut down the server. [Brian Havard] + *) pstrdup() is implicit in calls to table_* functions, so there's no need to do it before calling. Clean up a few cases. [Marc Slemko, Dean Gaudet] @@ -112,7 +115,7 @@ htdocs/manual/misc/known_client_problems.html#257th-byte) can happen at the 256th byte as well. Fixed. [Dean Gaudet] - *) Fix mod_mime_magic under OS/2, no support for block devices. + *) PORT: Fix mod_mime_magic under OS/2, no support for block devices. [Brian Havard] *) Fix memory corruption caused by allocating auth usernames in the 1.267 +16 -4 apachen/src/main/http_main.c Index: http_main.c =================================================================== RCS file: /export/home/cvs/apachen/src/main/http_main.c,v retrieving revision 1.266 retrieving revision 1.267 diff -u -r1.266 -r1.267 --- http_main.c 1998/01/12 04:33:32 1.266 +++ http_main.c 1998/01/13 21:19:10 1.267 @@ -2223,6 +2223,10 @@ sa.sa_handler = sig_term; if (sigaction(SIGTERM, &sa, NULL) < 0) aplog_error(APLOG_MARK, APLOG_WARNING, server_conf, "sigaction(SIGTERM)"); +#ifdef SIGINT + if (sigaction(SIGINT, &sa, NULL) < 0) + aplog_error(APLOG_MARK, APLOG_WARNING, server_conf, "sigaction(SIGINT)"); +#endif /* we want to ignore HUPs and USR1 while we're busy processing one */ sigaddset(&sa.sa_mask, SIGHUP); @@ -2263,11 +2267,11 @@ void detach(void) { -#if !defined(WIN32) && !defined(__EMX__) +#if !defined(WIN32) int x; chdir("/"); -#ifndef MPE +#if !defined(MPE) && !defined(__EMX__) /* Don't detach for MPE because child processes can't survive the death of the parent. */ if ((x = fork()) > 0) @@ -2293,7 +2297,7 @@ } #elif defined(__EMX__) /* OS/2 don't support process group IDs */ - pgrp = -getpid(); + pgrp = getpid(); #elif defined(MPE) /* MPE uses negative pid for process group */ pgrp = -getpid(); @@ -2323,7 +2327,7 @@ * but we haven't opened that yet. So leave it alone for now and it'll * be reopened moments later. */ -#endif /* ndef WIN32 or __EMX__ */ +#endif /* ndef WIN32 */ } /* Set group privileges. @@ -2906,6 +2910,14 @@ #endif signal(SIGPIPE, timeout); signal(SIGALRM, alrm_handler); + +#ifdef __EMX__ +/* Stop Ctrl-C/Ctrl-Break signals going to child processes */ + { + unsigned long ulTimes; + DosSetSignalExceptionFocus(0, &ulTimes); + } +#endif while (1) { BUFF *conn_io;