jim         97/11/08 11:19:17

  Modified:    src      CHANGES
               src/main http_main.c
  Log:
  PR:1056
  Reviewed by: Dean Gaudet, Martin Kraemer
  
  Revision  Changes    Path
  1.495     +5 -1      apachen/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/CHANGES,v
  retrieving revision 1.494
  retrieving revision 1.495
  diff -u -r1.494 -r1.495
  --- CHANGES   1997/11/08 05:20:58     1.494
  +++ CHANGES   1997/11/08 19:19:13     1.495
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b3
  -  
  +
  +  *) Fix problem with USE_FLOCK_SERIALIZED_ACCEPT not working
  +     properly. Each child needs to open the lockfile instead
  +     of using the passed file-descriptor from the parent. PR#1056
  +
     *) Fix the error logging in mod_cgi; the recent error log changes
        introduced a bug that prevented it from working correctly.
        [M.D.Parker] PR#1352
  
  
  
  1.247     +30 -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.246
  retrieving revision 1.247
  diff -u -r1.246 -r1.247
  --- http_main.c       1997/11/06 21:54:10     1.246
  +++ http_main.c       1997/11/08 19:19:15     1.247
  @@ -280,6 +280,8 @@
   
   #define accept_mutex_cleanup()
   
  +#define accept_mutex_child_init(x)
  +
   static void accept_mutex_init(pool *p)
   {
       ptrdiff_t old;
  @@ -366,6 +368,8 @@
       accept_mutex = (void *)(caddr_t)-1;
   }
   
  +#define accept_mutex_child_init(x)
  +
   static void accept_mutex_init(pool *p)
   {
       pthread_mutexattr_t mattr;
  @@ -483,6 +487,7 @@
       semctl(sem_id, 0, IPC_RMID, ick);
   }
   
  +#define accept_mutex_child_init(x)
   
   static void accept_mutex_init(pool *p)
   {
  @@ -556,6 +561,8 @@
   
   #define accept_mutex_cleanup()
   
  +#define accept_mutex_child_init(x)
  +
   /*
    * Initialize mutex lock.
    * Must be safe to call this on a restart.
  @@ -611,23 +618,40 @@
   
   static int lock_fd = -1;
   
  -#define accept_mutex_cleanup()
  +static void accept_mutex_cleanup(void)
  +{
  +    unlink(lock_fname);
  +}
   
   /*
    * Initialize mutex lock.
  + * Done by each child at it's birth
  + */
  +static void accept_mutex_child_init(pool *p)
  +{
  +
  +    lock_fd = popenf(p, lock_fname, O_WRONLY, 0600);
  +    if (lock_fd == -1) {
  +     aplog_error(APLOG_MARK, APLOG_EMERG, server_conf,
  +                 "Child cannot open lock file: %s\n", lock_fname);
  +     exit(1);
  +    }
  +}
  +/*
  + * Initialize mutex lock.
    * Must be safe to call this on a restart.
    */
   static void accept_mutex_init(pool *p)
   {
   
       expand_lock_fname(p);
  -    lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
  +    unlink(lock_fname);
  +    lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0600);
       if (lock_fd == -1) {
        aplog_error(APLOG_MARK, APLOG_EMERG, server_conf,
  -                 "Cannot open lock file: %s\n", lock_fname);
  +                 "Parent cannot open lock file: %s\n", lock_fname);
        exit(1);
       }
  -    unlink(lock_fname);
   }
   
   static void accept_mutex_on(void)
  @@ -662,6 +686,7 @@
    * the sockets. */
   #define NO_SERIALIZED_ACCEPT
   #define accept_mutex_cleanup()
  +#define accept_mutex_child_init(x)
   #define accept_mutex_init(x)
   #define accept_mutex_on()
   #define accept_mutex_off()
  @@ -2672,6 +2697,7 @@
   
       /* needs to be done before we switch UIDs so we have permissions */
       reopen_scoreboard(pconf);
  +    SAFE_ACCEPT(accept_mutex_child_init(pconf));
   
   #ifdef MPE
       /* Only try to switch if we're running as MANAGER.SYS */
  
  
  

Reply via email to