You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by sf...@apache.org on 2012/02/27 22:45:19 UTC
svn commit: r1294349 - /httpd/httpd/trunk/server/mpm/event/event.c
Author: sf
Date: Mon Feb 27 21:45:18 2012
New Revision: 1294349
URL: http://svn.apache.org/viewvc?rev=1294349&view=rev
Log:
Prevent listener thread from ever updating a worker's scoreboard slot
The worker may be doing something else by now. This should take
care of slots staying in "L" state in the scoreboard
Modified:
httpd/httpd/trunk/server/mpm/event/event.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=1294349&r1=1294348&r2=1294349&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/event/event.c (original)
+++ httpd/httpd/trunk/server/mpm/event/event.c Mon Feb 27 21:45:18 2012
@@ -767,10 +767,6 @@ static int start_lingering_close(event_c
{
apr_status_t rv;
- cs->c->sbh = NULL; /* prevent scoreboard updates from the listener
- * worker will loop around and set SERVER_READY soon
- */
-
if (ap_start_lingering_close(cs->c)) {
apr_pool_clear(cs->p);
ap_push_pool(worker_queue_info, cs->p);
@@ -861,6 +857,7 @@ static int process_socket(apr_thread_t *
int rc;
ap_sb_handle_t *sbh;
+ /* XXX: This will cause unbounded mem usage for long lasting connections */
ap_create_sb_handle(&sbh, p, my_child_num, my_thread_num);
if (cs == NULL) { /* This is a new connection */
@@ -1016,6 +1013,13 @@ read_request:
AP_DEBUG_ASSERT(rc == APR_SUCCESS);
}
}
+ /*
+ * Prevent this connection from writing to our connection state after it
+ * is no longer associated with this thread. This would happen if the EOR
+ * bucket is destroyed from the listener thread due to a connection abort
+ * or timeout.
+ */
+ c->sbh = NULL;
return 1;
}