From ddacf846b88e8a2736e48c1a0ff0b542baadb4cc Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Sat, 7 Jun 2014 22:04:48 +0000 Subject: [PATCH] -MPMs prefork & worker: avoid segfault with SAFE_ACCEPT in ONE_PROCESS mode. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1601170 13f79535-47bb-0310-9956-ffa450edef68 --- server/mpm/prefork/prefork.c | 8 ++++---- server/mpm/worker/worker.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/server/mpm/prefork/prefork.c b/server/mpm/prefork/prefork.c index d682452b20d..016d95e7cdc 100644 --- a/server/mpm/prefork/prefork.c +++ b/server/mpm/prefork/prefork.c @@ -755,6 +755,10 @@ static int make_child(server_rec *s, int slot) retained->max_daemons_limit = slot + 1; } + child_listen = mpm_listen[bucket[slot]]; + child_mutex = accept_mutex[bucket[slot]]; + child_pod = pod[bucket[slot]]; + if (one_process) { apr_signal(SIGHUP, sig_term); /* Don't catch AP_SIG_GRACEFUL in ONE_PROCESS mode :) */ @@ -771,10 +775,6 @@ static int make_child(server_rec *s, int slot) (void) ap_update_child_status_from_indexes(slot, 0, SERVER_STARTING, (request_rec *) NULL); - child_listen = mpm_listen[bucket[slot]]; - child_mutex = accept_mutex[bucket[slot]]; - child_pod = pod[bucket[slot]]; - #ifdef _OSD_POSIX /* BS2000 requires a "special" version of fork() before a setuid() call */ if ((pid = os_fork(ap_unixd_config.user_name)) == -1) { diff --git a/server/mpm/worker/worker.c b/server/mpm/worker/worker.c index d6ab4aefe23..585481f62a6 100644 --- a/server/mpm/worker/worker.c +++ b/server/mpm/worker/worker.c @@ -1407,6 +1407,10 @@ static int make_child(server_rec *s, int slot) retained->max_daemons_limit = slot + 1; } + child_listen = mpm_listen[bucket[slot]]; + child_mutex = accept_mutex[bucket[slot]]; + child_pod = pod[bucket[slot]]; + if (one_process) { set_signals(); worker_note_child_started(slot, getpid()); @@ -1414,10 +1418,6 @@ static int make_child(server_rec *s, int slot) /* NOTREACHED */ } - child_listen = mpm_listen[bucket[slot]]; - child_mutex = accept_mutex[bucket[slot]]; - child_pod = pod[bucket[slot]]; - if ((pid = fork()) == -1) { ap_log_error(APLOG_MARK, APLOG_ERR, errno, s, APLOGNO(00283) "fork: Unable to fork new process"); -- 2.47.3