httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Stoddard" <b...@wstoddard.com>
Subject Re: [PATCH] Switch back to SIGUSR1 and use SIGWINCH on Linux 2.0
Date Mon, 17 Sep 2001 18:59:36 GMT
My opinion is that we should support this patch (in concept, not reviewed in detail) or
not support Linux 2.0 with glibc 2.0.

Bill

----- Original Message -----
From: "Justin Erenkrantz" <jerenkrantz@ebuilt.com>
To: <dev@httpd.apache.org>
Sent: Monday, September 17, 2001 1:53 PM
Subject: [PATCH] Switch back to SIGUSR1 and use SIGWINCH on Linux 2.0


> This should resolve Roy's veto by switching back to SIGUSR1 for
> graceful restarts (except on Linux 2.0 with glibc 2.0).
>
> As I don't think you can veto a veto (call a vote?), I don't think
> his veto can be overriden.  But, I do want to post this before I
> commit it as it is a widespread change and I may have missed
> something.  We could extend this even further so that SIGHUP is
> also defined as a #define, but I'm not terribly sure we want to
> be that extreme.
>
> The docs also need to be updated, but I'm not sure the best way
> to phrase that it is SIGUSR1 except on one incredibly old platform
> that no one should be using threads with anyway.  -- justin
>
> Index: CHANGES
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/CHANGES,v
> retrieving revision 1.358
> diff -u -r1.358 CHANGES
> --- CHANGES 2001/09/06 23:58:29 1.358
> +++ CHANGES 2001/09/17 17:28:48
> @@ -1,5 +1,8 @@
>  Changes with Apache 2.0.26-dev
>
> +  *) Switch back to SIGUSR1 for graceful restarts on all platforms that
> +     support it.  [Justin Erenkrantz]
> +
>    *) Rewrite find_start_sequence to use a better search algorithm
>       to find the start tag.  [Justin Erenkrantz]
>
> Index: configure.in
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/configure.in,v
> retrieving revision 1.179
> diff -u -r1.179 configure.in
> --- configure.in 2001/09/15 11:44:55 1.179
> +++ configure.in 2001/09/17 17:28:48
> @@ -142,6 +142,8 @@
>  APACHE_SUBST(SHLTCFLAGS)
>  APACHE_SUBST(LTCFLAGS)
>
> +AP_RESTART_SIGNAL=SIGUSR1
> +
>  case $host in
>    *-apple-aux3*)
>        APR_SETVAR(APACHE_MPM, [prefork])
> @@ -157,7 +159,11 @@
>        ;;
>    *-linux-*)
>        case `uname -r` in
> -        2.[[2-9]]* ) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
> +        2.0* )
> +            AP_RESTART_SIGNAL=SIGWINCH
> +            ;;
> +        2.[[2-9]]* )
> +            APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
>              ;;
>          * )
>              ;;
> @@ -346,6 +352,10 @@
>      AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
>                [This platform doesn't suffer from the thundering herd problem])
>  fi
> +
> +AC_DEFINE_UNQUOTED(AP_RESTART_SIGNAL, $AP_RESTART_SIGNAL, [Signal used to gracefully
restart])
> +AC_DEFINE_UNQUOTED(AP_RESTART_SIGNAL_STRING, "$AP_RESTART_SIGNAL", [Signal used to
gracefully restart (as a quoted string)])
> +AC_SUBST(AP_RESTART_SIGNAL)
>
>  dnl check for endianness
>  if test "$cross_compiling" = "no"; then
> Index: modules/generators/mod_cgid.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/modules/generators/mod_cgid.c,v
> retrieving revision 1.97
> diff -u -r1.97 mod_cgid.c
> --- modules/generators/mod_cgid.c 2001/08/27 20:25:42 1.97
> +++ modules/generators/mod_cgid.c 2001/09/17 17:28:53
> @@ -238,10 +238,10 @@
>          case APR_OC_REASON_LOST:
>              /* it would be better to restart just the cgid child
>               * process but for now we'll gracefully restart the entire
> -             * server by sending SIGWINCH to ourself, the httpd parent
> -             * process
> +             * server by sending AP_RESTART_SIGNAL to ourself, the httpd
> +             * parent process
>               */
> -            kill(getpid(), SIGWINCH);
> +            kill(getpid(), AP_RESTART_SIGNAL);
>              break;
>          case APR_OC_REASON_RESTART:
>              apr_proc_other_child_unregister(data);
> Index: modules/mappers/mod_so.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/modules/mappers/mod_so.c,v
> retrieving revision 1.42
> diff -u -r1.42 mod_so.c
> --- modules/mappers/mod_so.c 2001/06/07 10:38:13 1.42
> +++ modules/mappers/mod_so.c 2001/09/17 17:28:53
> @@ -59,8 +59,8 @@
>  /*
>   * This module is used to load Apache modules at runtime. This means that the
>   * server functionality can be extended without recompiling and even without
> - * taking the server down at all. Only a HUP or WINCH signal needs to be send
> - * to the server to reload the dynamically loaded modules.
> + * taking the server down at all. Only a HUP or AP_RESTART_SIGNAL signal
> + * needs to be sent to the server to reload the dynamically loaded modules.
>   *
>   * To use, you'll first need to build your module as a shared library, then
>   * update your configuration (httpd.conf) to get the Apache core to load the
> @@ -98,9 +98,9 @@
>   * directive to get these log messages).
>   *
>   * If you edit the LoadModule directives while the server is live you can get
> - * Apache to re-load the modules by sending it a HUP or WINCH signal as normal.
> - * You can use this to dynamically change the capability of your server
> - * without bringing it down.
> + * Apache to re-load the modules by sending it a HUP or AP_RESTART_SIGNAL
> + * signal as normal.  You can use this to dynamically change the capability
> + * of your server without bringing it down.
>   *
>   * Because currently there is only limited builtin support in the Configure
>   * script for creating the shared library files (`.so'), please consult your
> Index: server/log.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/log.c,v
> retrieving revision 1.96
> diff -u -r1.96 log.c
> --- server/log.c 2001/07/30 17:55:38 1.96
> +++ server/log.c 2001/09/17 17:28:55
> @@ -527,7 +527,7 @@
>      mypid = getpid();
>      if (mypid != saved_pid
>           && apr_stat(&finfo, fname, APR_FINFO_MTIME, p) == APR_SUCCESS)
{
> -      /* WINCH and HUP call this on each restart.
> +      /* AP_RESTART_SIGNAL and HUP call this on each restart.
>         * Only warn on first time through for this pid.
>         *
>         * XXX: Could just write first time through too, although
> Index: server/mpm_common.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/mpm_common.c,v
> retrieving revision 1.66
> diff -u -r1.66 mpm_common.c
> --- server/mpm_common.c 2001/09/14 23:28:41 1.66
> +++ server/mpm_common.c 2001/09/17 17:28:56
> @@ -245,7 +245,7 @@
>          switch (signum) {
>          case SIGTERM:
>          case SIGHUP:
> -        case SIGWINCH:
> +        case AP_RESTART_SIGNAL:
>          case SIGKILL:
>              break;
>          default:
> Index: server/protocol.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/protocol.c,v
> retrieving revision 1.44
> diff -u -r1.44 protocol.c
> --- server/protocol.c 2001/09/11 18:38:21 1.44
> +++ server/protocol.c 2001/09/17 17:28:59
> @@ -406,17 +406,6 @@
>      }
>      /* we've probably got something to do, ignore graceful restart requests */
>
> -    /* XXX - sigwait doesn't work if the signal has been SIG_IGNed (under
> -     * linux 2.0 w/ glibc 2.0, anyway), and this step isn't necessary when
> -     * we're running a sigwait thread anyway. If/when unthreaded mode is
> -     * put back in, we should make sure to ignore this signal iff a sigwait
> -     * thread isn't used. - mvsk
> -
> -#ifdef SIGWINCH
> -    apr_signal(SIGWINCH, SIG_IGN);
> -#endif
> -    */
> -
>      r->request_time = apr_time_now();
>      r->the_request = apr_pstrdup(r->pool, l);
>      r->method = ap_getword_white(r->pool, &ll);
> Index: server/mpm/beos/beos.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/mpm/beos/beos.c,v
> retrieving revision 1.61
> diff -u -r1.61 beos.c
> --- server/mpm/beos/beos.c 2001/08/30 20:50:05 1.61
> +++ server/mpm/beos/beos.c 2001/09/17 17:29:01
> @@ -119,8 +119,8 @@
>
>  /*
>   * The max child slot ever assigned, preserved across restarts.  Necessary
> - * to deal with MaxClients changes across SIGWINCH restarts.  We use this
> - * value to optimize routines that have to scan the entire scoreboard.
> + * to deal with MaxClients changes across AP_RESTART_SIGNAL restarts.  We use
> + * this value to optimize routines that have to scan the entire scoreboard.
>   */
>  int ap_max_child_assigned = -1;
>  int ap_max_threads_limit = -1;
> @@ -226,7 +226,7 @@
>
>  static void restart(int sig)
>  {
> -    ap_start_restart(sig == SIGWINCH);
> +    ap_start_restart(sig == AP_RESTART_SIGNAL);
>  }
>
>  static void tell_workers_to_exit(void)
> @@ -270,14 +270,15 @@
>      if (sigaction(SIGPIPE, &sa, NULL) < 0)
>      ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf,
"sigaction(SIGPIPE)");
>
> -    /* we want to ignore HUPs and WINCH while we're busy processing one */
> +    /* we want to ignore HUPs and AP_RESTART_SIGNAL while we're busy
> +     * processing one */
>      sigaddset(&sa.sa_mask, SIGHUP);
> -    sigaddset(&sa.sa_mask, SIGWINCH);
> +    sigaddset(&sa.sa_mask, AP_RESTART_SIGNAL);
>      sa.sa_handler = restart;
>      if (sigaction(SIGHUP, &sa, NULL) < 0)
>      ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf,
"sigaction(SIGHUP)");
> -    if (sigaction(SIGWINCH, &sa, NULL) < 0)
> -     ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf,
"sigaction(SIGWINCH)");
> +    if (sigaction(AP_RESTART_SIGNAL, &sa, NULL) < 0)
> +     ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction("
AP_RESTART_SIGNAL_STRING ")");
>  }
>
>  /*****************************************************************
> @@ -810,9 +811,9 @@
>
>      /* If we're doing a graceful_restart then we're going to see a lot
>       * of threads exiting immediately when we get into the main loop
> -     * below (because we just sent them SIGWINCH).  This happens pretty
> -     * rapidly... and for each one that exits we'll start a new one until
> -     * we reach at least threads_min_free.  But we may be permitted to
> +     * below (because we just sent them AP_RESTART_SIGNAL).  This happens
> +     * pretty rapidly... and for each one that exits we'll start a new one
> +     * until we reach at least threads_min_free.  But we may be permitted to
>       * start more than that, so we'll just keep track of how many we're
>       * supposed to start up without the 1 second penalty between each fork.
>       */
> @@ -920,7 +921,7 @@
>
>      if (is_graceful) {
>          ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, 0, ap_server_conf,
> -     "SIGWINCH received.  Doing graceful restart");
> +     AP_RESTART_SIGNAL_STRING " received.  Doing graceful restart");
>      }
>      else {
>          /* Kill 'em all.  Since the child acts the same on the parents SIGTERM
> Index: server/mpm/perchild/perchild.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/mpm/perchild/perchild.c,v
> retrieving revision 1.78
> diff -u -r1.78 perchild.c
> --- server/mpm/perchild/perchild.c 2001/09/04 07:59:55 1.78
> +++ server/mpm/perchild/perchild.c 2001/09/17 17:29:03
> @@ -151,8 +151,9 @@
>
>  /*
>   * The max child slot ever assigned, preserved across restarts.  Necessary
> - * to deal with NumServers changes across SIGWINCH restarts.  We use this
> - * value to optimize routines that have to scan the entire child table.
> + * to deal with NumServers changes across AP_RESTART_SIGNAL restarts.  We
> + * use this value to optimize routines that have to scan the entire child
> + * table.
>   *
>   * XXX - It might not be worth keeping this code in. There aren't very
>   * many child processes in this MPM.
> @@ -352,7 +353,7 @@
>  static void restart(int sig)
>  {
>  #ifndef WIN32
> -    ap_start_restart(sig == SIGWINCH);
> +    ap_start_restart(sig == AP_RESTART_SIGNAL);
>  #else
>      ap_start_restart(1);
>  #endif
> @@ -416,14 +417,15 @@
>   ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGPIPE)");
>  #endif
>
> -    /* we want to ignore HUPs and WINCH while we're busy processing one */
> +    /* we want to ignore HUPs and AP_RESTART_SIGNAL while we're busy
> +     * processing one */
>      sigaddset(&sa.sa_mask, SIGHUP);
> -    sigaddset(&sa.sa_mask, SIGWINCH);
> +    sigaddset(&sa.sa_mask, AP_RESTART_SIGNAL);
>      sa.sa_handler = restart;
>      if (sigaction(SIGHUP, &sa, NULL) < 0)
>   ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGHUP)");
> -    if (sigaction(SIGWINCH, &sa, NULL) < 0)
> - ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGWINCH)");
> +    if (sigaction(AP_RESTART_SIGNAL, &sa, NULL) < 0)
> + ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction("
AP_RESTART_SIGNAL_STRING ")");
>  #else
>      if (!one_process) {
>   apr_signal(SIGSEGV, sig_coredump);
> @@ -451,9 +453,9 @@
>  #ifdef SIGHUP
>      apr_signal(SIGHUP, restart);
>  #endif /* SIGHUP */
> -#ifdef SIGWINCH
> -    apr_signal(SIGWINCH, restart);
> -#endif /* SIGWINCH */
> +#ifdef AP_RESTART_SIGNAL
> +    apr_signal(AP_RESTART_SIGNAL, restart);
> +#endif /* AP_RESTART_SIGNAL */
>  #ifdef SIGPIPE
>      apr_signal(SIGPIPE, SIG_IGN);
>  #endif /* SIGPIPE */
> @@ -1219,9 +1221,9 @@
>
>      /* If we're doing a graceful_restart then we're going to see a lot
>       * of children exiting immediately when we get into the main loop
> -     * below (because we just sent them SIGWINCH).  This happens pretty
> -     * rapidly... and for each one that exits we'll start a new one until
> -     * we reach at least daemons_min_free.  But we may be permitted to
> +     * below (because we just sent them AP_RESTART_SIGNAL).  This happens
> +     * pretty rapidly... and for each one that exits we'll start a new one
> +     * until we reach at least daemons_min_free.  But we may be permitted to
>       * start more than that, so we'll just keep track of how many we're
>       * supposed to start up without the 1 second penalty between each fork.
>       */
> @@ -1284,7 +1286,7 @@
>          char char_of_death = '!';
>
>   ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, 0, ap_server_conf,
> -     "SIGWINCH received.  Doing graceful restart");
> +           AP_RESTART_SIGNAL_STRING " received.  Doing graceful restart");
>
>   /* This is mostly for debugging... so that we know what is still
>           * gracefully dealing with existing request.
> Index: server/mpm/prefork/prefork.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/mpm/prefork/prefork.c,v
> retrieving revision 1.200
> diff -u -r1.200 prefork.c
> --- server/mpm/prefork/prefork.c 2001/08/30 20:50:05 1.200
> +++ server/mpm/prefork/prefork.c 2001/09/17 17:29:05
> @@ -144,8 +144,8 @@
>
>  /*
>   * The max child slot ever assigned, preserved across restarts.  Necessary
> - * to deal with MaxClients changes across SIGWINCH restarts.  We use this
> - * value to optimize routines that have to scan the entire scoreboard.
> + * to deal with MaxClients changes across AP_RESTART_SIGNAL restarts.  We
> + * use this value to optimize routines that have to scan the entire scoreboard.
>   */
>  int ap_max_daemons_limit = -1;
>  server_rec *ap_server_conf;
> @@ -435,7 +435,7 @@
>      shutdown_pending = 1;
>  }
>
> -/* restart() is the signal handler for SIGHUP and SIGWINCH
> +/* restart() is the signal handler for SIGHUP and AP_RESTART_SIGNAL
>   * in the parent process, unless running in ONE_PROCESS mode
>   */
>  static void restart(int sig)
> @@ -445,7 +445,7 @@
>   return;
>      }
>      restart_pending = 1;
> -    if ((is_graceful = (sig == SIGWINCH))) {
> +    if ((is_graceful = (sig == AP_RESTART_SIGNAL))) {
>          apr_pool_cleanup_kill(pconf, NULL, ap_cleanup_scoreboard);
>      }
>  }
> @@ -508,14 +508,15 @@
>   ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGPIPE)");
>  #endif
>
> -    /* we want to ignore HUPs and WINCH while we're busy processing one */
> +    /* we want to ignore HUPs and AP_RESTART_SIGNAL while we're busy
> +     * processing one */
>      sigaddset(&sa.sa_mask, SIGHUP);
> -    sigaddset(&sa.sa_mask, SIGWINCH);
> +    sigaddset(&sa.sa_mask, AP_RESTART_SIGNAL);
>      sa.sa_handler = restart;
>      if (sigaction(SIGHUP, &sa, NULL) < 0)
>   ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGHUP)");
> -    if (sigaction(SIGWINCH, &sa, NULL) < 0)
> -        ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf,
"sigaction(SIGWINCH)");
> +    if (sigaction(AP_RESTART_SIGNAL, &sa, NULL) < 0)
> +        ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction("
AP_RESTART_SIGNAL_STRING ")");
>  #else
>      if (!one_process) {
>   apr_signal(SIGSEGV, sig_coredump);
> @@ -543,9 +544,9 @@
>  #ifdef SIGHUP
>      apr_signal(SIGHUP, restart);
>  #endif /* SIGHUP */
> -#ifdef SIGWINCH
> -    apr_signal(SIGWINCH, restart);
> -#endif /* SIGWINCH */
> +#ifdef AP_RESTART_SIGNAL
> +    apr_signal(AP_RESTART_SIGNAL, restart);
> +#endif /* AP_RESTART_SIGNAL */
>  #ifdef SIGPIPE
>      apr_signal(SIGPIPE, SIG_IGN);
>  #endif /* SIGPIPE */
> @@ -856,7 +857,7 @@
>
>      if (one_process) {
>   apr_signal(SIGHUP, just_die);
> -        /* Don't catch SIGWINCH in ONE_PROCESS mode :) */
> +        /* Don't catch AP_RESTART_SIGNAL in ONE_PROCESS mode :) */
>   apr_signal(SIGINT, just_die);
>  #ifdef SIGQUIT
>   apr_signal(SIGQUIT, SIG_DFL);
> @@ -909,10 +910,10 @@
>   */
>   apr_signal(SIGHUP, just_die);
>   apr_signal(SIGTERM, just_die);
> -        /* The child process doesn't do anything for SIGWINCH.  Instead, the
> -         * pod is used for signalling graceful restart.
> +        /* The child process doesn't do anything for AP_RESTART_SIGNAL.
> +         * Instead, the pod is used for signalling graceful restart.
>           */
> -        apr_signal(SIGWINCH, SIG_IGN);
> +        apr_signal(AP_RESTART_SIGNAL, SIG_IGN);
>   child_main(slot);
>      }
>
> @@ -1141,7 +1142,7 @@
>
>      /* If we're doing a graceful_restart then we're going to see a lot
>   * of children exiting immediately when we get into the main loop
> - * below (because we just sent them SIGWINCH).  This happens pretty
> + * below (because we just sent them AP_RESTART_SIGNAL).  This happens pretty
>   * rapidly... and for each one that exits we'll start a new one until
>   * we reach at least daemons_min_free.  But we may be permitted to
>   * start more than that, so we'll just keep track of how many we're
> Index: server/mpm/threaded/threaded.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/mpm/threaded/threaded.c,v
> retrieving revision 1.63
> diff -u -r1.63 threaded.c
> --- server/mpm/threaded/threaded.c 2001/08/30 20:50:06 1.63
> +++ server/mpm/threaded/threaded.c 2001/09/17 17:29:09
> @@ -134,8 +134,8 @@
>
>  /*
>   * The max child slot ever assigned, preserved across restarts.  Necessary
> - * to deal with MaxClients changes across SIGWINCH restarts.  We use this
> - * value to optimize routines that have to scan the entire scoreboard.
> + * to deal with MaxClients changes across AP_RESTART_SIGNAL restarts.  We use
> + * this value to optimize routines that have to scan the entire scoreboard.
>   */
>  int ap_max_daemons_limit = -1;
>
> @@ -332,7 +332,7 @@
>
>  static void restart(int sig)
>  {
> -    ap_start_restart(sig == SIGWINCH);
> +    ap_start_restart(sig == AP_RESTART_SIGNAL);
>  }
>
>  static void set_signals(void)
> @@ -393,14 +393,15 @@
>   ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGPIPE)");
>  #endif
>
> -    /* we want to ignore HUPs and WINCH while we're busy processing one */
> +    /* we want to ignore HUPs and AP_RESTART_SIGNAL while we're busy
> +     * processing one */
>      sigaddset(&sa.sa_mask, SIGHUP);
> -    sigaddset(&sa.sa_mask, SIGWINCH);
> +    sigaddset(&sa.sa_mask, AP_RESTART_SIGNAL);
>      sa.sa_handler = restart;
>      if (sigaction(SIGHUP, &sa, NULL) < 0)
>   ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGHUP)");
> -    if (sigaction(SIGWINCH, &sa, NULL) < 0)
> - ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGWINCH)");
> +    if (sigaction(AP_RESTART_SIGNAL, &sa, NULL) < 0)
> + ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction("
AP_RESTART_SIGNAL_STRING ")");
>  #else
>      if (!one_process) {
>   apr_signal(SIGSEGV, sig_coredump);
> @@ -428,9 +429,9 @@
>  #ifdef SIGHUP
>      apr_signal(SIGHUP, restart);
>  #endif /* SIGHUP */
> -#ifdef SIGWINCH
> -    apr_signal(SIGWINCH, restart);
> -#endif /* SIGWINCH */
> +#ifdef AP_RESTART_SIGNAL
> +    apr_signal(AP_RESTART_SIGNAL, restart);
> +#endif /* AP_RESTART_SIGNAL */
>  #ifdef SIGPIPE
>      apr_signal(SIGPIPE, SIG_IGN);
>  #endif /* SIGPIPE */
> @@ -1254,9 +1255,9 @@
>
>      /* If we're doing a graceful_restart then we're going to see a lot
>       * of children exiting immediately when we get into the main loop
> -     * below (because we just sent them SIGWINCH).  This happens pretty
> -     * rapidly... and for each one that exits we'll start a new one until
> -     * we reach at least daemons_min_free.  But we may be permitted to
> +     * below (because we just sent them AP_RESTART_SIGNAL).  This happens
> +     * pretty rapidly... and for each one that exits we'll start a new one
> +     * until we reach at least daemons_min_free.  But we may be permitted to
>       * start more than that, so we'll just keep track of how many we're
>       * supposed to start up without the 1 second penalty between each fork.
>       */
> @@ -1332,7 +1333,7 @@
>
>      if (is_graceful) {
>   ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, 0, ap_server_conf,
> -     "SIGWINCH received.  Doing graceful restart");
> +     AP_RESTART_SIGNAL_STRING " received.  Doing graceful restart");
>
>   /* This is mostly for debugging... so that we know what is still
>           * gracefully dealing with existing request.
> Index: server/mpm/worker/worker.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/mpm/worker/worker.c,v
> retrieving revision 1.21
> diff -u -r1.21 worker.c
> --- server/mpm/worker/worker.c 2001/08/30 20:50:06 1.21
> +++ server/mpm/worker/worker.c 2001/09/17 17:29:12
> @@ -143,8 +143,9 @@
>
>  /*
>   * The max child slot ever assigned, preserved across restarts.  Necessary
> - * to deal with MaxClients changes across SIGWINCH restarts.  We use this
> - * value to optimize routines that have to scan the entire scoreboard.
> + * to deal with MaxClients changes across AP_RESTART_SIGNAL restarts.  We
> + * use this value to optimize routines that have to scan the entire
> + * scoreboard.
>   */
>  int ap_max_daemons_limit = -1;
>
> @@ -355,7 +356,7 @@
>
>  static void restart(int sig)
>  {
> -    ap_start_restart(sig == SIGWINCH);
> +    ap_start_restart(sig == AP_RESTART_SIGNAL);
>  }
>
>  static void set_signals(void)
> @@ -416,14 +417,15 @@
>   ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGPIPE)");
>  #endif
>
> -    /* we want to ignore HUPs and WINCH while we're busy processing one */
> +    /* we want to ignore HUPs and AP_RESTART_SIGNAL while we're busy
> +     * processing one */
>      sigaddset(&sa.sa_mask, SIGHUP);
> -    sigaddset(&sa.sa_mask, SIGWINCH);
> +    sigaddset(&sa.sa_mask, AP_RESTART_SIGNAL);
>      sa.sa_handler = restart;
>      if (sigaction(SIGHUP, &sa, NULL) < 0)
>   ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGHUP)");
> -    if (sigaction(SIGWINCH, &sa, NULL) < 0)
> - ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction(SIGWINCH)");
> +    if (sigaction(AP_RESTART_SIGNAL, &sa, NULL) < 0)
> + ap_log_error(APLOG_MARK, APLOG_WARNING, errno, ap_server_conf, "sigaction("
AP_RESTART_SIGNAL_STRING ")");
>  #else
>      if (!one_process) {
>   apr_signal(SIGSEGV, sig_coredump);
> @@ -451,9 +453,9 @@
>  #ifdef SIGHUP
>      apr_signal(SIGHUP, restart);
>  #endif /* SIGHUP */
> -#ifdef SIGWINCH
> -    apr_signal(SIGWINCH, restart);
> -#endif /* SIGWINCH */
> +#ifdef AP_RESTART_SIGNAL
> +    apr_signal(AP_RESTART_SIGNAL, restart);
> +#endif /* AP_RESTART_SIGNAL */
>  #ifdef SIGPIPE
>      apr_signal(SIGPIPE, SIG_IGN);
>  #endif /* SIGPIPE */
> @@ -1335,7 +1337,7 @@
>
>      /* If we're doing a graceful_restart then we're going to see a lot
>       * of children exiting immediately when we get into the main loop
> -     * below (because we just sent them SIGWINCH).  This happens pretty
> +     * below (because we just sent them AP_RESTART_SIGNAL).  This happens pretty
>       * rapidly... and for each one that exits we'll start a new one until
>       * we reach at least daemons_min_free.  But we may be permitted to
>       * start more than that, so we'll just keep track of how many we're
> @@ -1413,7 +1415,7 @@
>
>      if (is_graceful) {
>   ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, 0, ap_server_conf,
> -     "SIGWINCH received.  Doing graceful restart");
> +     AP_RESTART_SIGNAL_STRING " received.  Doing graceful restart");
>
>   /* This is mostly for debugging... so that we know what is still
>           * gracefully dealing with existing request.
> Index: support/apachectl.in
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/support/apachectl.in,v
> retrieving revision 1.3
> diff -u -r1.3 apachectl.in
> --- support/apachectl.in 2001/05/09 15:56:50 1.3
> +++ support/apachectl.in 2001/09/17 17:29:14
> @@ -125,7 +125,7 @@
>       fi
>   else
>       if $HTTPD -t >/dev/null 2>&1; then
> - if kill -WINCH $PID ; then
> + if kill -@AP_RESTART_SIGNAL@ $PID ; then
>       echo "$0 $ARG: httpd gracefully restarted"
>   else
>       echo "$0 $ARG: httpd could not be restarted"
> @@ -161,7 +161,7 @@
>               not running
>  fullstatus - dump a full status screen; requires lynx and mod_status enabled
>  status     - dump a short status screen; requires lynx and mod_status enabled
> -graceful   - do a graceful restart by sending a SIGWINCH or start if not running
> +graceful   - do a graceful restart by sending a @AP_RESTART_SIGNAL@ or start if not
running
>  configtest - do a configuration syntax test
>  help       - this screen
>
>


Mime
View raw message