]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge r487901 from trunk:
authorJim Jagielski <jim@apache.org>
Wed, 20 Dec 2006 02:04:39 +0000 (02:04 +0000)
committerJim Jagielski <jim@apache.org>
Wed, 20 Dec 2006 02:04:39 +0000 (02:04 +0000)
PR#37680: fix socket block/nonblock on restart/graceful
Patch submitted by Darius Davis (darius-abz free-range.com.au)

Submitted by: niq
Reviewed by: jim

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@488883 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
server/listen.c

diff --git a/CHANGES b/CHANGES
index 40ec0c4c14a2e05a6f2c7cc1b507ef8a91b2834a..e6671a16757a9bbe3ab94389ba922063bfb589cc 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                         -*- coding: utf-8 -*-
 Changes with Apache 2.2.4
 
+  *) core: Fix NONBLOCK status of listening sockets on restart/graceful
+     PR 37680.  [Darius Davis <darius-abz free-range.com.au>]
+
   *) mod_deflate: Rework inflate output and deflate output filter to fix several
      issues: Incorrect handling of flush buckets, potential memory leaks,
      excessive memory usage in inflate output filter for large compressed
diff --git a/STATUS b/STATUS
index dc44bfcb540b179ab2335a90eedefa1ab5202e1a..36134e2fff819487d47ff3ed892d6f3e6afa04cc 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -86,13 +86,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
         http://mail-archives.apache.org/mod_mbox//httpd-dev/200609.mbox/%3c1404e5910609091218p84f4d2flc1000764b4966727@mail.gmail.com%3e
       +1: trawick, wrowe, jerenkrantz
 
-    * core: PR#37680
-      Fix NONBLOCK status of listening sockets on restart/graceful
-      http://svn.apache.org/viewvc?view=rev&revision=487901
-      +1: niq, wrowe, rpluem
-          wrowe adds; if use_nonblock was called multi_listeners
-          I woulda +1'ed this on my first readthrough.
-
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
 
     * mpm_winnt: Fix return values from wait_for_many_objects.
index ddf874039872451b4f95e816eed9837ea166b6e8..f679f058200f133f5032902fa54232d274f830fa 100644 (file)
@@ -361,6 +361,9 @@ static int open_listeners(apr_pool_t *pool)
     int num_open;
     const char *userdata_key = "ap_open_listeners";
     void *data;
+#if AP_NONBLOCK_WHEN_MULTI_LISTEN
+    int use_nonblock;
+#endif
 
     /* Don't allocate a default listener.  If we need to listen to a
      * port, then the user needs to have a Listen directive in their
@@ -476,16 +479,15 @@ static int open_listeners(apr_pool_t *pool)
      * is already forgotten about by the time we call accept, we won't
      * be hung until another connection arrives on that port
      */
-    if (ap_listeners && ap_listeners->next) {
-        for (lr = ap_listeners; lr; lr = lr->next) {
-            apr_status_t status;
-
-            status = apr_socket_opt_set(lr->sd, APR_SO_NONBLOCK, 1);
-            if (status != APR_SUCCESS) {
-                ap_log_perror(APLOG_MARK, APLOG_STARTUP|APLOG_ERR, status, pool,
-                              "unable to make listening socket non-blocking");
-                return -1;
-            }
+    use_nonblock = (ap_listeners && ap_listeners->next);
+    for (lr = ap_listeners; lr; lr = lr->next) {
+        apr_status_t status;
+
+        status = apr_socket_opt_set(lr->sd, APR_SO_NONBLOCK, use_nonblock);
+        if (status != APR_SUCCESS) {
+            ap_log_perror(APLOG_MARK, APLOG_STARTUP|APLOG_ERR, status, pool,
+                          "unable to control socket non-blocking status");
+            return -1;
         }
     }
 #endif /* AP_NONBLOCK_WHEN_MULTI_LISTEN */