]> granicus.if.org Git - apache/commitdiff
Check the return value from ap_run_create_connection in mpm_event.
authorStefan Fritsch <sf@apache.org>
Sun, 9 Oct 2011 22:41:54 +0000 (22:41 +0000)
committerStefan Fritsch <sf@apache.org>
Sun, 9 Oct 2011 22:41:54 +0000 (22:41 +0000)
Add a todo in mpm_simple

PR: 41194
Submitted by: Davi Arnaut

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1180737 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
server/mpm/event/event.c
server/mpm/simple/simple_io.c

diff --git a/CHANGES b/CHANGES
index eb51027b4c86952e3008fda5f3e18abebf0fe317..ffa8ca9ef0157d2ab2280726164d5f44beea4ba1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -12,6 +12,9 @@ Changes with Apache 2.3.15
      PR 51714. [Stefan Fritsch, Jim Jagielski, Ruediger Pluem, Eric Covener,
      <lowprio20 gmail.com>]
 
+  *) mpm_event: Check the return value from ap_run_create_connection.
+     PR: 41194. [Davi Arnaut]
+
   *) mod_mime_magic: Add signatures for PNG and SWF to the example config.
      PR: 48352. [Jeremy Wagner-Kaiser <jwagner-kaiser adknowledge com>]
 
index 00084778d572f0dfc4145da4c5cc1092cc40f935..38b70dee5a9b05a979cd9368dabe68d2d1f153ad 100644 (file)
@@ -805,6 +805,12 @@ static int process_socket(apr_thread_t *thd, apr_pool_t * p, apr_socket_t * sock
         cs->bucket_alloc = apr_bucket_alloc_create(p);
         c = ap_run_create_connection(p, ap_server_conf, sock,
                                      conn_id, sbh, cs->bucket_alloc);
+        if (!c) {
+            apr_bucket_alloc_destroy(cs->bucket_alloc);
+            apr_pool_clear(p);
+            ap_push_pool(worker_queue_info, p);
+            return 1;
+        }
         apr_atomic_inc32(&connection_count);
         apr_pool_cleanup_register(c->pool, NULL, decrement_connection_count, apr_pool_cleanup_null);
         c->current_thread = thd;
index 11f1a5b37b244b5563b1109dcc79eb4f5cd0f947..5af7f2d9161c699818437a221d0a02b6e7b0cd53 100644 (file)
@@ -208,6 +208,7 @@ static void *simple_io_setup_conn(apr_thread_t * thread, void *baton)
 
     scon->c = ap_run_create_connection(scon->pool, ap_server_conf, scon->sock,
                                        conn_id, sbh, scon->ba);
+    /* XXX: handle failure */
 
     scon->c->cs = apr_pcalloc(scon->pool, sizeof(conn_state_t));
     cs = scon->c->cs;