From: Yann Ylavic Date: Thu, 18 Jan 2018 14:43:38 +0000 (+0000) Subject: Revert r1821499, will re-commit the right change. X-Git-Tag: 2.5.0-alpha2-ci-test-only~2967 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=149c60c42e81f043bf4ac5cc5abb95d7fa1eb087;p=thirdparty%2Fapache%2Fhttpd.git Revert r1821499, will re-commit the right change. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1821503 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index efe57e705cc..910cb3ab44d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,10 +1,6 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.1 - *) mpm_event,worker: Mask signals for threads created by modules in child - init, so that they don't receive (implicitely) the ones meant for the MPM. - PR 62009. [Armin Abfalterer , Yann Ylavic] - *) mpm_event: Update scoreboard status for KeepAlive state. [Yann Ylavic] *) core, mpm_event: Avoid a small memory leak of the scoreboard handle, for diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index 6f57894a8dc..6ccc2084454 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -2663,11 +2663,19 @@ static void child_main(int child_num_arg, int child_bucket) /*stuff to do before we switch id's, so we have permissions. */ ap_reopen_scoreboard(pchild, NULL, 0); - /* done with init critical section */ if (ap_run_drop_privileges(pchild, ap_server_conf)) { clean_child_exit(APEXIT_CHILDFATAL); } + apr_thread_mutex_create(&g_timer_skiplist_mtx, APR_THREAD_MUTEX_DEFAULT, pchild); + APR_RING_INIT(&timer_free_ring, timer_event_t, link); + apr_pool_create(&pskip, pchild); + apr_skiplist_init(&timer_skiplist, pskip); + apr_skiplist_set_compare(timer_skiplist, timer_comp, timer_comp); + ap_run_child_init(pchild, ap_server_conf); + + /* done with init critical section */ + /* Just use the standard apr_setup_signal_thread to block all signals * from being received. The child processes no longer use signals for * any communication with the parent process. @@ -2679,14 +2687,6 @@ static void child_main(int child_num_arg, int child_bucket) clean_child_exit(APEXIT_CHILDFATAL); } - ap_run_child_init(pchild, ap_server_conf); - - apr_thread_mutex_create(&g_timer_skiplist_mtx, APR_THREAD_MUTEX_DEFAULT, pchild); - APR_RING_INIT(&timer_free_ring, timer_event_t, link); - apr_pool_create(&pskip, pchild); - apr_skiplist_init(&timer_skiplist, pskip); - apr_skiplist_set_compare(timer_skiplist, timer_comp, timer_comp); - if (ap_max_requests_per_child) { conns_this_child = ap_max_requests_per_child; } diff --git a/server/mpm/worker/worker.c b/server/mpm/worker/worker.c index 9d72f90a467..9a971ebd576 100644 --- a/server/mpm/worker/worker.c +++ b/server/mpm/worker/worker.c @@ -1112,16 +1112,17 @@ static void child_main(int child_num_arg, int child_bucket) clean_child_exit(APEXIT_CHILDFATAL); } - /* done with init critical section */ if (ap_run_drop_privileges(pchild, ap_server_conf)) { clean_child_exit(APEXIT_CHILDFATAL); } + ap_run_child_init(pchild, ap_server_conf); + + /* done with init critical section */ + /* Just use the standard apr_setup_signal_thread to block all signals * from being received. The child processes no longer use signals for - * any communication with the parent process. Let's also do this before - * child_init() hooks are called and possibly create threads that - * otherwise could "steal" (implicitely) MPM's signals. + * any communication with the parent process. */ rv = apr_setup_signal_thread(); if (rv != APR_SUCCESS) { @@ -1130,8 +1131,6 @@ static void child_main(int child_num_arg, int child_bucket) clean_child_exit(APEXIT_CHILDFATAL); } - ap_run_child_init(pchild, ap_server_conf); - if (ap_max_requests_per_child) { requests_this_child = ap_max_requests_per_child; }