You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by pq...@apache.org on 2009/06/28 10:13:43 UTC
svn commit: r789064 - /httpd/httpd/trunk/server/mpm/simple/simple_run.c
Author: pquerna
Date: Sun Jun 28 08:13:43 2009
New Revision: 789064
URL: http://svn.apache.org/viewvc?rev=789064&view=rev
Log:
server/mpm/simple/simple_run.c
(simple_setup_pollcb): Only pollcbs created using KQueue, EPoll or Event Ports operate correctly with removing sockets across threads.
Modified:
httpd/httpd/trunk/server/mpm/simple/simple_run.c
Modified: httpd/httpd/trunk/server/mpm/simple/simple_run.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/simple/simple_run.c?rev=789064&r1=789063&r2=789064&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/simple/simple_run.c (original)
+++ httpd/httpd/trunk/server/mpm/simple/simple_run.c Sun Jun 28 08:13:43 2009
@@ -254,14 +254,18 @@
static int simple_setup_pollcb(simple_core_t * sc)
{
+ int i;
apr_status_t rv;
+ int good_methods[] = {APR_POLLSET_KQUEUE, APR_POLLSET_PORT, APR_POLLSET_EPOLL};
- rv = apr_pollcb_create(&sc->pollcb, 512 /* pqXXXXX: make configrable */ ,
- sc->pool, 0);
-
+ for (i = 0; i < sizeof(good_methods) / sizeof(void*); i++) {
+ /* pqXXXXX: make size of pollcb configrable or dynamic */
+ rv = apr_pollcb_create_ex(&sc->pollcb, 512,
+ sc->pool, APR_POLLSET_NODEFAULT, good_methods[i]);
+ }
if (rv) {
ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL,
- "simple_setup_pollcb: apr_pollcb_create failed.");
+ "simple_setup_pollcb: apr_pollcb_create failed for all possible backends!");
return rv;
}
return rv;