rbb 99/03/06 16:47:53
Modified: pthreads/src/include acceptlock.h httpd.h pthreads/src/main acceptlock.c scoreboard.c Log: Modifications to make the acceptlock abstractions work on Linux. Revision Changes Path 1.2 +0 -1 apache-apr/pthreads/src/include/acceptlock.h Index: acceptlock.h =================================================================== RCS file: /home/cvs/apache-apr/pthreads/src/include/acceptlock.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- acceptlock.h 1999/03/05 16:45:57 1.1 +++ acceptlock.h 1999/03/07 00:47:43 1.2 @@ -90,7 +90,6 @@ void accept_mutex_off(int); #elif defined(USE_FLOCK_SERIALIZED_ACCEPT) -#define accept_mutex_child_init(x) void accept_mutex_cleanup(void *); void accept_mutex_child_init(pool *); void accept_mutex_init(pool *); 1.10 +1 -1 apache-apr/pthreads/src/include/httpd.h Index: httpd.h =================================================================== RCS file: /home/cvs/apache-apr/pthreads/src/include/httpd.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- httpd.h 1999/02/24 20:30:14 1.9 +++ httpd.h 1999/03/07 00:47:44 1.10 @@ -1039,7 +1039,7 @@ API_EXPORT(int) ap_can_exec(const struct stat *); API_EXPORT(void) ap_chdir_file(const char *file); API_EXPORT(int) ap_get_max_daemons(void); -server_rec * get_server_conf(void); +API_EXPORT(const server_rec *) ap_get_server_conf(void); #ifndef HAVE_CANONICAL_FILENAME /* 1.2 +28 -24 apache-apr/pthreads/src/main/acceptlock.c Index: acceptlock.c =================================================================== RCS file: /home/cvs/apache-apr/pthreads/src/main/acceptlock.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- acceptlock.c 1999/03/05 16:45:55 1.1 +++ acceptlock.c 1999/03/07 00:47:49 1.2 @@ -478,31 +478,32 @@ void accept_mutex_cleanup(void *foo) { int i; - + char * lock_fname; for (i = 0; i < ap_acceptors_per_child; i++) { lock_fname = expand_lock_fname(foo, i); - unlink(lock_fname); + unlink(lock_fname); } } /* * Initialize mutex lock. * Done by each child at it's birth - */ + */ void accept_mutex_child_init(pool *p) { int i; - + for (i = 0; i < ap_acceptors_per_child; i++) { char *lock_fname = expand_lock_fname(p, i); - - lock_fd[i] = ap_popenf(p, lock_fname, O_WRONLY, 0600); - if (lock_fd[i] == -1) { - ap_log_error(APLOG_MARK, APLOG_EMERG, ap_get_server_conf(), + + lock_fd[i] = ap_popenf(p, lock_fname, O_WRONLY, 0600); + if (lock_fd[i] == -1) { + ap_log_error(APLOG_MARK, APLOG_EMERG, + (const server_rec *)ap_get_server_conf(), "Child cannot open lock file: %s", lock_fname); clean_child_exit(APEXIT_CHILDINIT); - } + } } } @@ -513,20 +514,21 @@ void accept_mutex_init(pool *p) { int i; - char * lock_fname; + char *lock_fname; lock_fd = (int *)ap_palloc(p, ap_acceptors_per_child * sizeof(int *)); - + for (i = 0; i < ap_acceptors_per_child; i++) { lock_fname = expand_lock_fname(p, i); - unlink(lock_fname); - lock_fd[i] = ap_popenf(p, lock_fname, + unlink(lock_fname); + lock_fd[i] = ap_popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0600); - if (lock_fd[i] == -1) { - ap_log_error(APLOG_MARK, APLOG_EMERG, ap_get_server_conf(), - "Parent cannot open lock file: %s", lock_fname); - exit(APEXIT_INIT); - } - ap_register_cleanup(p, p, accept_mutex_cleanup, ap_null_cleanup); + if (lock_fd[i] == -1) { + ap_log_error(APLOG_MARK, APLOG_EMERG, + (const server_rec *) ap_get_server_conf(), + "Parent cannot open lock file: %s", lock_fname); + exit(APEXIT_INIT); + } + ap_register_cleanup(p, p, accept_mutex_cleanup, ap_null_cleanup); } } @@ -535,11 +537,12 @@ int ret; while ((ret = flock(lock_fd[locknum], LOCK_EX)) < 0 && errno != EINTR) - continue; + continue; if (ret < 0 && errno != EINTR) { - ap_log_error(APLOG_MARK, APLOG_EMERG, ap_get_server_conf(), - "flock: LOCK_EX: Error getting accept lock. Exiting!"); + ap_log_error(APLOG_MARK, APLOG_EMERG, + (const server_rec *) ap_get_server_conf(), + "flock: LOCK_EX: Error getting accept lock. Exiting!"); clean_child_exit(APEXIT_CHILDFATAL); } } @@ -547,8 +550,9 @@ void accept_mutex_off(int locknum) { if (flock(lock_fd[locknum], LOCK_UN) < 0 && errno != EINTR) { - ap_log_error(APLOG_MARK, APLOG_EMERG, ap_get_server_conf(), - "flock: LOCK_UN: Error freeing accept lock. Exiting!"); + ap_log_error(APLOG_MARK, APLOG_EMERG, + (const server_rec *) ap_get_server_conf(), + "flock: LOCK_UN: Error freeing accept lock. Exiting!"); clean_child_exit(APEXIT_CHILDFATAL); } } 1.5 +1 -1 apache-apr/pthreads/src/main/scoreboard.c Index: scoreboard.c =================================================================== RCS file: /home/cvs/apache-apr/pthreads/src/main/scoreboard.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- scoreboard.c 1999/02/15 20:39:01 1.4 +++ scoreboard.c 1999/03/07 00:47:50 1.5 @@ -309,7 +309,7 @@ static void setup_shared_mem(pool *p) { struct shmid_ds shmbuf; - server_rec * server_conf = get_server_conf(); + server_rec * server_conf = ap_get_server_conf(); #ifdef MOVEBREAK char *obrk; #endif