httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roy Fielding <field...@hyperreal.com>
Subject cvs commit: apache/src CHANGES http_main.c
Date Sat, 25 Jan 1997 20:28:21 GMT
fielding    97/01/25 12:28:21

  Modified:    src       CHANGES http_main.c
  Log:
  Fixed condition where, if a child fails to fork, the scoreboard would
  continue to say SERVER_STARTING forever. Eventually, the main process
  would refuse to start new children because count_idle_servers() will
  count those SERVER_STARTING entries and will always report that there
  are enough idle servers.
  
  Submitted by: Phillip Vandry <vandry@staple.mlink.net>
  Reviewed by: Roy Fielding, Marc Slemko, Chuck Murcko, Randy Terbush
  
  Revision  Changes    Path
  1.133     +6 -0      apache/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache/src/CHANGES,v
  retrieving revision 1.132
  retrieving revision 1.133
  diff -C3 -r1.132 -r1.133
  *** CHANGES	1997/01/25 20:12:48	1.132
  --- CHANGES	1997/01/25 20:28:17	1.133
  ***************
  *** 106,111 ****
  --- 106,117 ----
         select, and removed potential for infinite loop in accept.
         [Roy Fielding, after useful PR from adrian@virginia.edu]
    
  +   *) Fixed condition where, if a child fails to fork, the scoreboard would
  +      continue to say SERVER_STARTING forever. Eventually, the main process
  +      would refuse to start new children because count_idle_servers() will
  +      count those SERVER_STARTING entries and will always report that there
  +      are enough idle servers. [Phillip Vandry]
  + 
    Changes with Apache 1.2b4:
    
      *) Fix possible race condition in accept_mutex_init() that
  
  
  
  1.112     +9 -3      apache/src/http_main.c
  
  Index: http_main.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_main.c,v
  retrieving revision 1.111
  retrieving revision 1.112
  diff -C3 -r1.111 -r1.112
  *** http_main.c	1997/01/25 20:12:49	1.111
  --- http_main.c	1997/01/25 20:28:19	1.112
  ***************
  *** 1715,1721 ****
        }    
    }
    
  ! void make_child(server_rec *server_conf, int child_num)
    {
        int pid;
    
  --- 1715,1721 ----
        }    
    }
    
  ! int make_child(server_rec *server_conf, int child_num)
    {
        int pid;
    
  ***************
  *** 1733,1739 ****
               over and over again. */
    	sleep(10);
    
  ! 	return;
        } 
        
        if (!pid) {
  --- 1733,1739 ----
               over and over again. */
    	sleep(10);
    
  ! 	return -1;
        } 
        
        if (!pid) {
  ***************
  *** 1741,1746 ****
  --- 1741,1747 ----
    	signal (SIGTERM, (void (*)())just_die);
    	child_main (child_num);
        }
  +     return 0;
    }
    
    static int
  ***************
  *** 2014,2020 ****
    	    Explain1("Starting new child in slot %d",child_slot);
    	    (void)update_child_status(child_slot,SERVER_STARTING,
    	     (request_rec*)NULL);
  ! 	    make_child(server_conf, child_slot);
    
    	}
    
  --- 2015,2026 ----
    	    Explain1("Starting new child in slot %d",child_slot);
    	    (void)update_child_status(child_slot,SERVER_STARTING,
    	     (request_rec*)NULL);
  ! 	    if (make_child(server_conf, child_slot) < 0) {
  ! 		/* fork didn't succeed. Fix the scoreboard or else
  ! 		   it will say SERVER_STARTING forever and ever */
  ! 	        (void)update_child_status(child_slot,SERVER_DEAD,
  ! 	             (request_rec*)NULL);
  ! 	    }
    
    	}
    
  
  
  

Mime
View raw message