On 01/18/2018 03:19 PM, [email protected] wrote:
> Author: ylavic
> Date: Thu Jan 18 14:19:28 2018
> New Revision: 1821499
>
> URL: http://svn.apache.org/viewvc?rev=1821499&view=rev
> Log:
> mpm_event,worker: Mask signals for threads created by modules in child init.
>
> PR 62009, so that they don't receive (implicitely) the ones meant for the MPM.
>
> Inspired by: Armin Abfalterer <a.abfalterer gmail.com>
> Proposed by: Yann Ylavic
>
>
> Modified:
> httpd/httpd/trunk/CHANGES
> httpd/httpd/trunk/server/mpm/event/event.c
> httpd/httpd/trunk/server/mpm/worker/worker.c
>
>
> Modified: httpd/httpd/trunk/server/mpm/event/event.c
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1821499&r1=1821498&r2=1821499&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/server/mpm/event/event.c (original)
> +++ httpd/httpd/trunk/server/mpm/event/event.c Thu Jan 18 14:19:28 2018
> @@ -2663,19 +2663,11 @@ static void child_main(int child_num_arg
> /*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.
> @@ -2687,6 +2679,14 @@ static void child_main(int child_num_arg
> 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);
Is there a reason why ap_run_child_init and the skiplist stuff are now in
reverse order?
> +
> if (ap_max_requests_per_child) {
> conns_this_child = ap_max_requests_per_child;
> }
>
Regards
RĂ¼diger