You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Alexander Schrijver <al...@gmail.com> on 2009/06/01 16:36:22 UTC

graceful-stop and SIGWINCH

Hi everyone,

A couple of days a go i noticed that apache2ctl uses the signal SIGWINCH
to send a graceful-stop. This is obviously a very bad idea. e.g. try
starting httpd -X and change your window size ;)

I am proposing to use the SIGUSR2 signal (see the diff).

The first diff is for apache2 and the last one for apr. Please note that
i don't know the apache or apr stuff that well.

Regards,

Alexander

Index: include/mpm_common.h
===================================================================
--- include/mpm_common.h	(revision 780410)
+++ include/mpm_common.h	(working copy)
@@ -72,13 +72,13 @@
 #define AP_SIG_GRACEFUL_STRING "SIGUSR1"
 
 /* Signal used to gracefully stop */
-#define AP_SIG_GRACEFUL_STOP SIGWINCH
+#define AP_SIG_GRACEFUL_STOP SIGUSR2
 
 /* Signal used to gracefully stop (without SIG prefix) */
-#define AP_SIG_GRACEFUL_STOP_SHORT WINCH
+#define AP_SIG_GRACEFUL_STOP_SHORT USR2
 
 /* Signal used to gracefully stop (as a quoted string) */
-#define AP_SIG_GRACEFUL_STOP_STRING "SIGWINCH"
+#define AP_SIG_GRACEFUL_STOP_STRING "SIGUSR2"
 
 /**
  * Make sure all child processes that have been spawned by the parent process

Index: threadproc/unix/signals.c
===================================================================
--- threadproc/unix/signals.c	(revision 780413)
+++ threadproc/unix/signals.c	(working copy)
@@ -307,13 +307,7 @@
 /* the rest of the signals removed from the mask in this function
  * absolutely must be removed; you cannot block synchronous signals
  * (requirement of pthreads API)
- *
- * SIGUSR2 is being removed from the mask for the convenience of
- * Purify users (Solaris, HP-UX, SGI) since Purify uses SIGUSR2
  */
-#ifdef SIGUSR2
-    sigdelset(sig_mask, SIGUSR2);
-#endif
 }
 
 APR_DECLARE(apr_status_t) apr_signal_thread(int(*signal_handler)(int signum))