httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wr...@locus.apache.org
Subject cvs commit: apache-1.3/src/os/win32 service.c service.h
Date Mon, 05 Jun 2000 18:05:13 GMT
wrowe       00/06/05 11:05:11

  Modified:    .        STATUS
               src      CHANGES
               src/main http_main.c
               src/os/win32 service.c service.h
  Log:
    *) Add Win32 option -k stop as an alias of -k shutdown, to correspond to
       the NET START/NET STOP syntax.
  
    *) Force Apache to test the Win32 config prior to any operation,
       except the [-k shutdown -n service] and [-u -n service] combinations.
  
    *) Add Win32 Ctrl+C/Ctrl+Break/Close/Logoff/Shutdown handler.
       Modified submission by Jan Just Keijser <KEIJSERJJ@logica.com>
  
  Revision  Changes    Path
  1.824     +31 -46    apache-1.3/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.823
  retrieving revision 1.824
  diff -u -r1.823 -r1.824
  --- STATUS	2000/06/05 16:08:09	1.823
  +++ STATUS	2000/06/05 18:04:19	1.824
  @@ -1,5 +1,5 @@
     1.3 STATUS:
  -  Last modified at [$Date: 2000/06/05 16:08:09 $]
  +  Last modified at [$Date: 2000/06/05 18:04:19 $]
   
   Release:
   
  @@ -27,26 +27,30 @@
   
       * Add a simple hold console open patch (wait for close or
           the ESC key, with a nice message) if the server died a 
  -        bad death (non-zero exit code) in console mode.  Add the
  -        ConsoleHandler to deal with Ctrl+C/Ctrl+Break and, at
  -        least under NT, shutdown, logoff and window close.
  +        bad death (non-zero exit code) in console mode.  
           OtherBill is working on this
   
       * Assure we haven't drifted too far between httpd.conf-dist
           and httpd.conf-dist-win.
   
  -    * Assure the windows.html and win_compiling.html reflect
  -        reality, today.
  -	- running the server without admin
  -	- how CGIs work (?)
  -	- short/long name handling (?)
  -	- better status page on current state of NT for users
  -        > Basic answer the the last one - 2.0 is coming
  +    * Document cvstodsp6.pl in win_compiling.html.
  +        OtherBill will do this Wed if noone beats him to it.
  +
  +    * Assure the windows.html reflects reality, today.
  +	- running the service as a user other than SYSTEM (NT/2000).
  +        - CONDITIONALLY - if someone posts revisions to the list for
  +          htdocs/manual/windows.html to properly document JJK's Win95
  +          services support as a -HIGHLY EXPERIMENTAL- patch,
  +          OtherBill will include that patch (with -k runservice rather
  +          than -s, not documented in the -h list of options, and with
  +          FreeConsole() -following- successful parsing of httpd.conf).
  +          Too many are complaining, -but- 3+ Win95 users must step up
  +          to test this new patch offered late Mon eve before we proceed.
   
       * Complete the security hole in stat() by testing for anything
         other than conventional file-not-found, permission-denied errors
         and rejecting the request then and there.  By rights, all of
  -      these cases aught to be Not Found, not Permission Denied.
  +      these cases aught to be Not Found, not Permission Denied?
   
   RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
   
  @@ -65,16 +69,20 @@
   
   Available Patches:
   
  -    * Eric Wedel <wedel@wenet.net>'s patch for CONNECT method and proxy
  -      on Win32.  Addresses PR 5107 and maybe 2014.
  -	PR: 5899
  -	Status: 
  -
       * Dan Astoorian <djast@cs.toronto.edu>'s patch to fix mod_include RE
         tokenisation
   	PR: 5898
   	Status: 
   
  +    * JJ Keijser's patch (99/10/06) to: 
  +	- Run Apache as a service on Win9x (PR2208)
  +	- Making sure that Apache is shut down when the system is shutdown. 
  +           under Win95 (PR1643, PR2472)
  +	- Use apache -i/-u to install/uninstalling Apache on Win9x
  +	- Make Apache shut down cleanly when run on Windows 95 (PR4125)
  +	PR#: PR2472, PR4125, PR1643 (suspended) and PR2208 (suspended).
  +	Status: Martin +1(untested)
  +
       * Gerd Knorr <gknorr@berlinonline.de>'s patch to enable mod_auth_digest
         to handle both Digest *and* Basic authentication modes.
   	PR: 5879
  @@ -116,16 +124,6 @@
   
   	Status: Martin +1(untested), Ken +1(untested)
          
  -    * JJ Keijser's patch (99/10/06) to: 
  -	- Run Apache as a service on Win95 (PR2208)
  -	- Making sure that Apache is shut down when the system is shutdown. 
  -           (PR1643, PR2472)
  -	- Use apache -i/-u to install/uninstalling Apache on Win95
  -	- Add ConsoleCtrlHandler to catch Ctrl-C in the Apache console window
  -	- Make Apache shut down cleanly when run on Windows 95 (PR4125)
  -	PR#: PR2472, PR4125, PR1643 (suspended) and PR2208 (suspended).
  -	Status: Martin +1(untested)
  -
       * Paul Reder's patch to fix Allow/Deny (.htaccess parsing) in
         regex <Directory*> processing.
   	Message-ID: <37A88E34.FD09C658@raleigh.ibm.com>
  @@ -422,27 +420,12 @@
   	Ken: What's W95-specific about it?
   
    Help:
  -    * There are several PRs reporting Apache looping and they each seem to
  -      implicate CGI script processing. The first PR happened about the time
  -      we migrated to using native Win32 function calls to create the child 
  -      process. I have tried to recreate the problem w/o success. It just now
  -      occurs to me that there may be a race condition between when the new
  -      process comes alive and the parent sending data to (or attempting to
  -      read data from) the child process. CreateProcess() returns immediately,
  -      before the new process is created. The parent may be attempting I/O
  -      with the child before it's ready. TODO: investigate ways to cause the
  -      parent to wait for the child process to become fully active before
  -      proceeding with CGI I/O processing.
  -
       * chdir() for CGI scripts and mod_include #exec needs to be 
         re-implemented now that CreateProcess is being used.
   
       * process/thread model
   	- need dynamic thread creation/destruction, similar to 
   	  Unix process model
  -	- can't use WaitForMultipleObjects in the same way we
  -	  do now, since that has a limit of 64(!) objects.  Grr.
  -	  PR#1665
   
       * some errors printed by CGIs to stderr don't end up making it
         to the server log unless an extra debugging message is added
  @@ -460,8 +443,6 @@
       * the mutex should be critical-regions, since the current design
         is creating a mess of SO calls that are unnecessary
   
  -    * we don't mmap on NT.  Use TransmitFile?
  -
       * CGIs
   	- docs on how they work w/scripts
   	- WTF is the buffering coming from?
  @@ -469,8 +450,12 @@
   
       * performance
   
  -    * http_main.c hell
  -	- split into two files?
  +    * documentation:
  +	- running the server without admin
  +	- how CGIs work
  +	- update README.NT
  +	- short/long name handling
  +	- better status page on current state of NT for users
   
       * who should run the service?  Who exactly is the "system account"?
   
  
  
  
  1.1548    +10 -0     apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1547
  retrieving revision 1.1548
  diff -u -r1.1547 -r1.1548
  --- CHANGES	2000/06/05 16:08:15	1.1547
  +++ CHANGES	2000/06/05 18:04:28	1.1548
  @@ -1,5 +1,15 @@
   Changes with Apache 1.3.13
   
  +  *) Add Win32 option -k stop as an alias of -k shutdown, to correspond to
  +     the NET START/NET STOP syntax. [William Rowe]
  +
  +  *) Force Apache to test the Win32 config prior to any operation,
  +     except the [-k shutdown -n service] and [-u -n service] combinations.
  +     [William Rowe]
  +
  +  *) Add Win32 Ctrl+C/Ctrl+Break/Close/Logoff/Shutdown handler.
  +     [William Rowe, Jan Just Keijser <KEIJSERJJ@logica.com>]
  +
     *) Expand mod_setenvif so its directives can be used in <Files> and
        <Directory> containers, and in .htaccess files when FileInfo
        overriding is allowed.  PR#3000 [Ken Coar]
  
  
  
  1.495     +25 -3     apache-1.3/src/main/http_main.c
  
  Index: http_main.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/main/http_main.c,v
  retrieving revision 1.494
  retrieving revision 1.495
  diff -u -r1.494 -r1.495
  --- http_main.c	2000/06/01 23:42:25	1.494
  +++ http_main.c	2000/06/05 18:04:41	1.495
  @@ -6690,7 +6690,10 @@
   	    ap_dump_settings = 1;
   	    break;
   	case 'k':
  -	    signal_to_send = optarg;
  +            if (!strcasecmp(optarg, "stop"))
  +                signal_to_send = "shutdown";
  +            else
  +                signal_to_send = optarg;
   	    break;
   #endif /* WIN32 */
   #ifdef NETWARE
  @@ -6789,11 +6792,29 @@
       ap_no2slash(ap_server_confname);
   
   #ifdef WIN32
  +    if (!child) {
  +        /* Let's go fishing for some signals including ctrl+c/ctrl+break,
  +         * and logoff, close and shutdown under WinNT/2000
  +         */
  +        SetConsoleCtrlHandler(ap_control_handler, TRUE);
  +        atexit(ap_control_handler_terminate);
  +    }
  +    
  +    /* Read the conf now unless we are uninstalling the service,
  +     * or shutting down a running service 
  +     * (but do read the conf for the pidfile if we shutdown the console)
  +     */
  +    if ((install >= 0) && (!service_name || !signal_to_send 
  +                           || strcasecmp(signal_to_send,"shutdown"))) {
  +        server_conf = ap_read_config(pconf, ptrans, ap_server_confname);
  +    }
  +
       if (install) {
           if (!service_name)
               service_name = ap_pstrdup(pconf, DEFAULTSERVICENAME);
           if (install > 0) 
  -            InstallService(service_name, ap_server_root_relative(pcommands, ap_server_confname));
  +            InstallService(service_name, ap_server_root_relative(pcommands, 
  +                                                         ap_server_confname));
           else
               RemoveService(service_name);
           clean_parent_exit(0);
  @@ -6808,8 +6829,9 @@
           printf("Unknown service: %s\n", service_name);
           clean_parent_exit(0);
       }
  -#endif
  +#else
       server_conf = ap_read_config(pconf, ptrans, ap_server_confname);
  +#endif
   
       if (ap_configtestonly) {
           fprintf(stderr, "%s: Syntax OK\n", ap_server_root_relative(pcommands, ap_server_confname));
  
  
  
  1.17      +42 -1     apache-1.3/src/os/win32/service.c
  
  Index: service.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/os/win32/service.c,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- service.c	2000/04/15 17:57:25	1.16
  +++ service.c	2000/06/05 18:04:53	1.17
  @@ -456,6 +456,47 @@
               return TRUE;
       return FALSE;
   }
  -           
  +
  +/* Control handler for processing Ctrl-C/Ctrl-Break and
  + * on Windows NT also user logoff and system shutdown
  + */
  +
  +void ap_control_handler_terminate(void)
  +{
  +    /* Remove the control handler at the end of the day. */
  +    SetConsoleCtrlHandler(ap_control_handler, FALSE);
  +}
  +
  +BOOL CALLBACK ap_control_handler(DWORD ctrl_type)
  +{
  +    switch (ctrl_type)
  +    {
  +        case CTRL_C_EVENT:
  +        case CTRL_BREAK_EVENT:
  +            fprintf(stderr, "Apache server interrupted...\n");
  +            /* for Interrupt signals, shut down the server.
  +             * Tell the system we have dealt with the signal
  +             * without waiting for Apache to terminate.
  +             */
  +            ap_start_shutdown();            
  +            return TRUE;
  +
  +        case CTRL_CLOSE_EVENT:
  +        case CTRL_LOGOFF_EVENT:
  +        case CTRL_SHUTDOWN_EVENT:
  +            /* for Terminate signals, shut down the server.
  +             * Wait for Apache to terminate, but respond
  +             * after a reasonable time to tell the system
  +             * that we have already tried to shut down.
  +             */
  +            fprintf(stderr, "Apache server shutdown initiated...\n");
  +            ap_start_shutdown();
  +            Sleep(30000);
  +            return TRUE;
  +    }
  + 
  +    /* We should never get here, but this is (mostly) harmless */
  +    return FALSE;
  +}
   #endif /* WIN32 */
   
  
  
  
  1.6       +2 -0      apache-1.3/src/os/win32/service.h
  
  Index: service.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/os/win32/service.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- service.h	2000/03/13 21:00:41	1.5
  +++ service.h	2000/06/05 18:04:55	1.6
  @@ -12,6 +12,8 @@
   void RemoveService(char *display_name);
   int service_init();
   int send_signal_to_service(char *display_name, char *sig);
  +void ap_control_handler_terminate(void);
  +BOOL CALLBACK ap_control_handler(DWORD ctrl_type);
   #endif /* WIN32 */
   
   #endif /* SERVICE_H */
  
  
  

Mime
View raw message