Commit af2aaa20 authored by Jim Jagielski's avatar Jim Jagielski
Browse files

Merge r487901 from trunk:

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
parent 4e17519f
Loading
Loading
Loading
Loading
+3 −0
Changes for CHANGES: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
                                                        -*- 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
+0 −7
Changes for STATUS: 0 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -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.
+6 −4
Changes for server/listen.c: 6 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -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,18 +479,17 @@ 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) {
    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, 1);
        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 make listening socket non-blocking");
                          "unable to control socket non-blocking status");
            return -1;
        }
    }
    }
#endif /* AP_NONBLOCK_WHEN_MULTI_LISTEN */

    /* we come through here on both passes of the open logs phase