manoj       99/11/15 14:26:42

  Modified:    src/modules/mpm/dexter dexter.c
  Log:
  Allow NO_SERIALIZED_ACCEPT to work.
  
  Revision  Changes    Path
  1.54      +16 -9     apache-2.0/src/modules/mpm/dexter/dexter.c
  
  Index: dexter.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/dexter/dexter.c,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -d -u -r1.53 -r1.54
  --- dexter.c  1999/11/15 21:22:47     1.53
  +++ dexter.c  1999/11/15 22:26:35     1.54
  @@ -102,8 +102,6 @@
       unsigned char status;
   } child_table[HARD_SERVER_LIMIT];
   
  -#define SAFE_ACCEPT(stmt) do {stmt;} while (0)
  -
   /*
    * The max child slot ever assigned, preserved across restarts.  Necessary
    * to deal with NumServers changes across SIGWINCH restarts.  We use this
  @@ -172,9 +170,14 @@
   static pthread_mutex_t idle_thread_count_mutex;
   
   /* Locks for accept serialization */
  -static pthread_mutex_t thread_accept_mutex = PTHREAD_MUTEX_INITIALIZER;
  +#ifdef NO_SERIALIZED_ACCEPT
  +#define SAFE_ACCEPT(stmt) APR_SUCCESS
  +#else
  +#define SAFE_ACCEPT(stmt) (stmt)
   static ap_lock_t *process_accept_mutex;
  +#endif /* NO_SERIALIZED_ACCEPT */
   static char *lock_fname;
  +static pthread_mutex_t thread_accept_mutex = PTHREAD_MUTEX_INITIALIZER;
   
   /* Global, alas, so http_core can talk to us */
   enum server_token_type ap_server_tokens = SrvTk_FULL;
  @@ -879,7 +882,8 @@
               pthread_mutex_unlock(&thread_accept_mutex);
               break;
           }
  -        if ((rv = ap_lock(process_accept_mutex)) != APR_SUCCESS) {
  +        if ((rv = SAFE_ACCEPT(ap_lock(process_accept_mutex)))
  +            != APR_SUCCESS) {
               ap_log_error(APLOG_MARK, APLOG_EMERG, rv, server_conf,
                            "ap_lock failed. Attempting to shutdown "
                            "process gracefully.");
  @@ -936,7 +940,8 @@
               if ((rv = ap_accept(&csd, sd, ptrans)) != APR_SUCCESS) {
                   ap_log_error(APLOG_MARK, APLOG_ERR, rv, NULL, "ap_accept");
               }
  -            if ((rv = ap_unlock(process_accept_mutex)) != APR_SUCCESS) {
  +            if ((rv = SAFE_ACCEPT(ap_unlock(process_accept_mutex)))
  +                != APR_SUCCESS) {
                   ap_log_error(APLOG_MARK, APLOG_EMERG, rv, server_conf,
                                "ap_unlock failed. Attempting to shutdown "
                                "process gracefully.");
  @@ -956,7 +961,8 @@
               process_socket(ptrans, csd, conn_id);
               requests_this_child--;
        } else {
  -            if ((rv = ap_unlock(process_accept_mutex)) != APR_SUCCESS) {
  +            if ((rv = SAFE_ACCEPT(ap_unlock(process_accept_mutex)))
  +                != APR_SUCCESS) {
                   ap_log_error(APLOG_MARK, APLOG_EMERG, rv, server_conf,
                                "ap_unlock failed. Attempting to shutdown "
                                "process gracefully.");
  @@ -1001,7 +1007,8 @@
   
       /*stuff to do before we switch id's, so we have permissions.*/
   
  -    rv = ap_child_init_lock(&process_accept_mutex, lock_fname, pchild);
  +    rv = SAFE_ACCEPT(ap_child_init_lock(&process_accept_mutex, lock_fname,
  +                                        pchild));
       if (rv != APR_SUCCESS) {
           ap_log_error(APLOG_MARK, APLOG_EMERG, rv, server_conf,
                        "Couldn't initialize cross-process lock in child");
  @@ -1335,8 +1342,8 @@
       lock_fname = ap_psprintf(_pconf, "%s.%lu",
                                ap_server_root_relative(_pconf, lock_fname),
                                my_pid);
  -    rv = ap_create_lock(&process_accept_mutex, APR_MUTEX, APR_CROSS_PROCESS,
  -                   lock_fname, _pconf);
  +    rv = SAFE_ACCEPT(ap_create_lock(&process_accept_mutex, APR_MUTEX,
  +                                    APR_CROSS_PROCESS, lock_fname, _pconf));
       if (rv != APR_SUCCESS) {
           ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s,
                        "Couldn't create cross-process lock");
  
  
  

Reply via email to