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,