dgaudet 99/05/06 17:38:13
Modified: src CHANGES src/main http_main.c Log: loop around on EINTR from semop() Revision Changes Path 1.1352 +3 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1351 retrieving revision 1.1352 diff -u -r1.1351 -r1.1352 --- CHANGES 1999/05/07 00:16:06 1.1351 +++ CHANGES 1999/05/07 00:38:05 1.1352 @@ -1,5 +1,8 @@ Changes with Apache 1.3.7 + *) It's OK for a semop to return EINTR, just loop around and try + again. [Dean Gaudet] + *) Fix configuration engine re-entrant hangups, which solve a handful of problems seen with mod_perl <Perl> configuration sections [Salvador Ortiz Garcia <[EMAIL PROTECTED]>] 1.436 +10 -6 apache-1.3/src/main/http_main.c Index: http_main.c =================================================================== RCS file: /home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.435 retrieving revision 1.436 diff -u -r1.435 -r1.436 --- http_main.c 1999/05/05 20:42:58 1.435 +++ http_main.c 1999/05/07 00:38:11 1.436 @@ -741,17 +741,21 @@ static void accept_mutex_on(void) { - if (semop(sem_id, &op_on, 1) < 0) { - perror("accept_mutex_on"); - clean_child_exit(APEXIT_CHILDFATAL); + while (semop(sem_id, &op_on, 1) < 0) { + if (errno != EINTR) { + perror("accept_mutex_on"); + clean_child_exit(APEXIT_CHILDFATAL); + } } } static void accept_mutex_off(void) { - if (semop(sem_id, &op_off, 1) < 0) { - perror("accept_mutex_off"); - clean_child_exit(APEXIT_CHILDFATAL); + while (semop(sem_id, &op_off, 1) < 0) { + if (errno != EINTR) { + perror("accept_mutex_off"); + clean_child_exit(APEXIT_CHILDFATAL); + } } }