Hi, No need for a CHANGE entry ? CJ
Le 16/12/2014 14:06, [email protected] a écrit :
Author: jim Date: Tue Dec 16 13:06:48 2014 New Revision: 1645936 URL: http://svn.apache.org/r1645936 Log: Merge r1642868 from trunk: mpm_event: follow up to r1639614 (trunk) and r1642858 (2.4.x). Notify suspend in any case when starting lingering close (blocking), and outside the lingering queue's critical section. Submitted by: ylavic Reviewed/backported by: jim Modified: httpd/httpd/branches/2.4.x/ (props changed) httpd/httpd/branches/2.4.x/server/mpm/event/event.c Modified: httpd/httpd/branches/2.4.x/server/mpm/event/event.c URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/server/mpm/event/event.c?rev=1645936&r1=1645935&r2=1645936&view=diff ============================================================================== --- httpd/httpd/branches/2.4.x/server/mpm/event/event.c (original) +++ httpd/httpd/branches/2.4.x/server/mpm/event/event.c Tue Dec 16 13:06:48 2014 @@ -810,16 +810,16 @@ static int start_lingering_close_common( cs->pub.state = CONN_STATE_LINGER_NORMAL; } apr_atomic_inc32(&lingering_count); - apr_thread_mutex_lock(timeout_mutex); cs->c->sbh = NULL; + if (in_worker) { + notify_suspend(cs); + } + apr_thread_mutex_lock(timeout_mutex); TO_QUEUE_APPEND(*q, cs); cs->pfd.reqevents = ( cs->pub.sense == CONN_SENSE_WANT_WRITE ? APR_POLLOUT : APR_POLLIN) | APR_POLLHUP | APR_POLLERR; cs->pub.sense = CONN_SENSE_DEFAULT; - if (in_worker) { - notify_suspend(cs); - } rv = apr_pollset_add(event_pollset, &cs->pfd); apr_thread_mutex_unlock(timeout_mutex); if (rv != APR_SUCCESS && !APR_STATUS_IS_EEXIST(rv)) { @@ -846,6 +846,8 @@ static int start_lingering_close_common( static int start_lingering_close_blocking(event_conn_state_t *cs) { if (ap_start_lingering_close(cs->c)) { + cs->c->sbh = NULL; + notify_suspend(cs); ap_push_pool(worker_queue_info, cs->p); return 0; }
