manoj       99/09/08 11:58:50

  Modified:    src/modules/mpm/dexter acceptlock.c dexter.c
  Log:
  Update dexter to work with the latest APR changes
  
  Revision  Changes    Path
  1.6       +4 -2      apache-2.0/src/modules/mpm/dexter/acceptlock.c
  
  Index: acceptlock.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/dexter/acceptlock.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -d -u -r1.5 -r1.6
  --- acceptlock.c      1999/08/31 21:34:05     1.5
  +++ acceptlock.c      1999/09/08 18:58:46     1.6
  @@ -488,6 +488,7 @@
   {
       int i;
       char * lock_fname;
  +    ap_file_t *tempfile;
   
       lock_count = number_of_locks;
       lock_fd = (int *)ap_palloc(p, lock_count * sizeof(int *));
  @@ -505,8 +506,9 @@
       init_lock_fname(p);
       for (i = 0; i < lock_count; i++) {
           lock_fname = expand_lock_fname(p, i);
  -     lock_fd[i] = ap_popenf(p, lock_fname, 
  -                            O_CREAT | O_WRONLY | O_EXCL, 0644);
  +        ap_open(p, lock_fname, APR_CREATE | APR_WRITE | APR_EXCL,
  +                APR_UREAD | APR_UWRITE | APR_GREAD | APR_WREAD, &tempfile);
  +        ap_get_os_file(tempfile, &lock_fd[i]);
        if (lock_fd[i] == -1) {
            perror("open");
            fprintf(stderr, "Cannot open lock file: %s\n", lock_fname);
  
  
  
  1.36      +20 -10    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.35
  retrieving revision 1.36
  diff -u -d -u -r1.35 -r1.36
  --- dexter.c  1999/08/31 21:34:05     1.35
  +++ dexter.c  1999/09/08 18:58:46     1.36
  @@ -57,6 +57,7 @@
    
   #define CORE_PRIVATE 
    
  +#include "apr_portable.h"
   #include "httpd.h" 
   #include "http_main.h" 
   #include "http_log.h" 
  @@ -845,16 +846,16 @@
   static void *worker_thread(void *arg)
   {
       struct sockaddr sa_client;
  -    int csd = -1;
  +    ap_socket_t *csd = NULL;
       ap_context_t *tpool;             /* Pool for this thread           */
       ap_context_t *ptrans;            /* Pool for per-transaction stuff */
  -    int sd = -1;
  +    ap_socket_t *sd = NULL;
       int srv;
       int curr_pollfd, last_pollfd = 0;
  -    NET_SIZE_T len = sizeof(struct sockaddr);
       int thread_just_started = 1;
       int thread_num = *((int *) arg);
       long conn_id = child_num * HARD_THREAD_LIMIT + thread_num;
  +    int native_socket;
   
       pthread_mutex_lock(&thread_pool_create_mutex);
       ap_create_context(thread_pool_parent, NULL, &tpool);
  @@ -908,7 +909,7 @@
               }
   
               if (num_listenfds == 1) {
  -                sd = ap_listeners->fd;
  +                sd = ap_listeners->sd;
                   goto got_fd;
               }
               else {
  @@ -922,7 +923,7 @@
                       /* XXX: Should we check for POLLERR? */
                       if (listenfds[curr_pollfd].revents & POLLIN) {
                           last_pollfd = curr_pollfd;
  -                        sd = listenfds[curr_pollfd].fd;
  +                        ap_put_os_sock(tpool, &sd, 
&listenfds[curr_pollfd].fd);
                           goto got_fd;
                       }
                   } while (curr_pollfd != last_pollfd);
  @@ -930,7 +931,7 @@
           }
       got_fd:
           if (!workers_may_exit) {
  -            csd = ap_accept(sd, &sa_client, &len);
  +            ap_accept(sd, &csd);
               SAFE_ACCEPT(accept_mutex_off(0));
               SAFE_ACCEPT(intra_mutex_off(0));
            pthread_mutex_lock(&idle_thread_count_mutex);
  @@ -951,7 +952,8 @@
               pthread_mutex_unlock(&idle_thread_count_mutex);
            break;
        }
  -        process_socket(ptrans, &sa_client, csd, conn_id);
  +        ap_get_os_sock(csd, &native_socket);
  +        process_socket(ptrans, &sa_client, native_socket, conn_id);
           ap_clear_pool(ptrans);
           requests_this_child--;
       }
  @@ -1009,7 +1011,7 @@
       listenfds[0].events = POLLIN;
       listenfds[0].revents = 0;
       for (lr = ap_listeners, i = 1; i <= num_listenfds; lr = lr->next, ++i) {
  -        listenfds[i].fd = lr->fd;
  +        ap_get_os_sock(lr->sd, &listenfds[i].fd);
           listenfds[i].events = POLLIN; /* should we add POLLPRI ?*/
           listenfds[i].revents = 0;
       }
  @@ -1261,6 +1263,14 @@
       }
   }
   
  +static ap_status_t cleanup_fd(void *fdptr)
  +{
  +    if (close(*((int *) fdptr)) < 0) {
  +        return APR_EBADF;
  +    }
  +    return APR_SUCCESS;
  +}
  +
   int ap_mpm_run(ap_context_t *_pconf, ap_context_t *plog, server_rec *s)
   {
       int remaining_children_to_start;
  @@ -1274,8 +1284,8 @@
                        "pipe: (pipe_of_death)");
           exit(1);
       }
  -    ap_note_cleanups_for_fd(pconf, pipe_of_death[0]);
  -    ap_note_cleanups_for_fd(pconf, pipe_of_death[1]);
  +    ap_register_cleanup(pconf, &pipe_of_death[0], cleanup_fd, cleanup_fd);
  +    ap_register_cleanup(pconf, &pipe_of_death[1], cleanup_fd, cleanup_fd);
       if (fcntl(pipe_of_death[0], F_SETFD, O_NONBLOCK) == -1) {
           ap_log_error(APLOG_MARK, APLOG_ERR,
                        (const server_rec*) server_conf,
  
  
  

Reply via email to