At 09:00 PM 11/20/2003, Jeff Trawick wrote: >William A. Rowe, Jr. wrote: > >>We need to axe or decorate the symbol NO_USE_SIGACTION in our >>ongoing effort to prevent namespace clashes. > >sounds good > >>We do have a flag APR_HAVE_SIGACTION which is tested and >>configured for, and the attached patch to the Apache MPMs presumes that this was the >>intent of APR_HAVE_SIGACTION. > >can you take a look at that patch, Bill? (hint, save to disk first, then edit :) )
ROFL :-) >>But it will enable all platforms to use the (likely untested) sigaction >> code in the various MPMs. > >but we're using the sigaction code now... what platforms besides windows actually >have NO_USE_SIGACTION defined? Bah - was looking at apr.h not apr.h.in. You are correct. >>code in the various MPMs. If we are choosing on *Apache's* behalf >>to use (or not use) sigaction, then this flag, or it's newly renamed >>cousin, needs to be an apache conf variable and disappear altogether >>from APR. >>Comments please from those who know the sigaction code? > >I think everybody will end up using the same exact code, but the preprocessor check >will be nicer. Well here's the patch... enjoy Bill
Index: server/mpm_common.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm_common.c,v retrieving revision 1.108 diff -u -r1.108 mpm_common.c --- server/mpm_common.c 3 Sep 2003 19:27:09 -0000 1.108 +++ server/mpm_common.c 20 Nov 2003 17:57:55 -0000 @@ -953,7 +953,7 @@ apr_status_t ap_fatal_signal_setup(server_rec *s, apr_pool_t *in_pconf) { -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION struct sigaction sa; sigemptyset(&sa.sa_mask); @@ -986,7 +986,7 @@ ap_log_error(APLOG_MARK, APLOG_WARNING, errno, s, "sigaction(SIGILL)"); #endif -#else /* NO_USE_SIGACTION */ +#else /* !APR_HAVE_SIGACTION */ apr_signal(SIGSEGV, sig_coredump); #ifdef SIGBUS @@ -1002,7 +1002,7 @@ apr_signal(SIGILL, sig_coredump); #endif /* SIGILL */ -#endif /* NO_USE_SIGACTION */ +#endif /* !APR_HAVE_SIGACTION */ pconf = in_pconf; parent_pid = my_pid = getpid(); Index: server/mpm/experimental/leader/leader.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm/experimental/leader/leader.c,v retrieving revision 1.32 diff -u -r1.32 leader.c --- server/mpm/experimental/leader/leader.c 16 Nov 2003 01:51:27 -0000 1.32 +++ server/mpm/experimental/leader/leader.c 20 Nov 2003 17:57:56 -0000 @@ -535,7 +535,7 @@ static void set_signals(void) { -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION struct sigaction sa; #endif @@ -543,7 +543,7 @@ ap_fatal_signal_setup(ap_server_conf, pconf); } -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION sigemptyset(&sa.sa_mask); sa.sa_flags = 0; Index: server/mpm/experimental/perchild/perchild.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm/experimental/perchild/perchild.c,v retrieving revision 1.140 diff -u -r1.140 perchild.c --- server/mpm/experimental/perchild/perchild.c 3 Sep 2003 19:27:11 -0000 1.140 +++ server/mpm/experimental/perchild/perchild.c 20 Nov 2003 17:57:57 -0000 @@ -401,7 +401,7 @@ static void set_signals(void) { -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION struct sigaction sa; #endif @@ -409,7 +409,7 @@ ap_fatal_signal_setup(ap_server_conf, pconf); } -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION sigemptyset(&sa.sa_mask); sa.sa_flags = 0; Index: server/mpm/experimental/threadpool/threadpool.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm/experimental/threadpool/threadpool.c,v retrieving revision 1.20 diff -u -r1.20 threadpool.c --- server/mpm/experimental/threadpool/threadpool.c 5 Sep 2003 19:36:26 -0000 1.20 +++ server/mpm/experimental/threadpool/threadpool.c 20 Nov 2003 17:57:58 -0000 @@ -606,7 +606,7 @@ static void set_signals(void) { -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION struct sigaction sa; #endif @@ -614,7 +614,7 @@ ap_fatal_signal_setup(ap_server_conf, pconf); } -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION sigemptyset(&sa.sa_mask); sa.sa_flags = 0; Index: server/mpm/prefork/prefork.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm/prefork/prefork.c,v retrieving revision 1.282 diff -u -r1.282 prefork.c --- server/mpm/prefork/prefork.c 16 Nov 2003 23:03:18 -0000 1.282 +++ server/mpm/prefork/prefork.c 20 Nov 2003 17:57:59 -0000 @@ -400,7 +400,7 @@ static void set_signals(void) { -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION struct sigaction sa; #endif @@ -408,7 +408,7 @@ ap_fatal_signal_setup(ap_server_conf, pconf); } -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION sigemptyset(&sa.sa_mask); sa.sa_flags = 0; Index: server/mpm/worker/worker.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm/worker/worker.c,v retrieving revision 1.140 diff -u -r1.140 worker.c --- server/mpm/worker/worker.c 16 Nov 2003 23:47:07 -0000 1.140 +++ server/mpm/worker/worker.c 20 Nov 2003 17:58:00 -0000 @@ -445,7 +445,7 @@ static void set_signals(void) { -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION struct sigaction sa; #endif @@ -453,7 +453,7 @@ ap_fatal_signal_setup(ap_server_conf, pconf); } -#ifndef NO_USE_SIGACTION +#if APR_HAVE_SIGACTION sigemptyset(&sa.sa_mask); sa.sa_flags = 0;
Index: STATUS =================================================================== RCS file: /home/cvs/apr/STATUS,v retrieving revision 1.194 diff -u -r1.194 STATUS --- STATUS 17 Nov 2003 09:56:46 -0000 1.194 +++ STATUS 21 Nov 2003 03:30:24 -0000 @@ -34,7 +34,6 @@ Some headers with issues: apr.hnw (READDIR_IS_THREAD_SAFE, ENUM_BITFIELD, _POSIX_THREAD_SAFE_FUNCTIONS (?)) - apr.hw (NO_USE_SIGACTION) * Flush out the test suite and make sure it passes on all platforms. @@ -44,9 +43,10 @@ unified test suite, and adding more tests to make the suite comprehensive. - * close out the XXX's already! (wrowe: this is "production release" - quality code with that many unanswered questions?) If they aren't - showstoppers, deprecate them to TODO:s. + * Eliminate the TODO's and XXX's by using the doxygen @bug feature + to allow us to better track the open issues, and provide historical + bug lists that help porters understand what was wrong in the old + versions of APR that they would be upgrading from. CURRENT VOTES: Index: include/apr.hw =================================================================== RCS file: /home/cvs/apr/include/apr.hw,v retrieving revision 1.120 diff -u -r1.120 apr.hw --- include/apr.hw 17 Nov 2003 00:28:25 -0000 1.120 +++ include/apr.hw 21 Nov 2003 03:30:24 -0000 @@ -143,8 +143,6 @@ #define __attribute__(__x) #endif -#define NO_USE_SIGACTION - #ifndef _WIN32_WCE #define APR_HAVE_ARPA_INET_H 0 #define APR_HAVE_CONIO_H 1