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;
      }




Reply via email to