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;
  
  
  

Reply via email to