]> granicus.if.org Git - apache/commitdiff
Only remove sockets from the pollcb when they have events being polled for.
authorPaul Querna <pquerna@apache.org>
Sun, 28 Jun 2009 08:18:37 +0000 (08:18 +0000)
committerPaul Querna <pquerna@apache.org>
Sun, 28 Jun 2009 08:18:37 +0000 (08:18 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@789067 13f79535-47bb-0310-9956-ffa450edef68

server/mpm/simple/simple_io.c

index d7c18928b764c4943c02aae1828362b95b68e2e3..b1d77f30fce963061578c3071fc59613d36b2ffe 100644 (file)
@@ -64,14 +64,16 @@ static apr_status_t simple_io_process(simple_conn_t * scon)
 
     while (!c->aborted) {
 
-        cs->pfd.reqevents = APR_POLLOUT | APR_POLLHUP | APR_POLLERR | APR_POLLIN;
-        rv = apr_pollcb_remove(sc->pollcb, &cs->pfd);
-        if (rv) {
-            ap_log_error(APLOG_MARK, APLOG_ERR, rv, ap_server_conf,
-                         "process_socket: apr_pollcb_remove failure");
-            /*AP_DEBUG_ASSERT(rv == APR_SUCCESS);*/
+        if (cs->pfd.reqevents != 0) {
+            rv = apr_pollcb_remove(sc->pollcb, &cs->pfd);
+            if (rv) {
+                ap_log_error(APLOG_MARK, APLOG_ERR, rv, ap_server_conf,
+                             "simple_io_process: apr_pollcb_remove failure");
+                /*AP_DEBUG_ASSERT(rv == APR_SUCCESS);*/
+            }
+            cs->pfd.reqevents = 0;
         }
-        
+
         if (cs->state == CONN_STATE_READ_REQUEST_LINE) {
             if (!c->aborted) {
                 ap_run_process_connection(c);