]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Fix the use of the default 'flush' provider.
authorChristophe Jaillet <jailletc36@apache.org>
Sun, 29 Nov 2015 13:26:03 +0000 (13:26 +0000)
committerChristophe Jaillet <jailletc36@apache.org>
Sun, 29 Nov 2015 13:26:03 +0000 (13:26 +0000)
Improve documentation for the "flusher" parameter.
Remove useless empty lines.

See http://mail-archives.apache.org/mod_mbox/httpd-dev/200812.mbox/%3C494226C0.4050407@force-elite.com%3E for some more explanation.
A python script is given there to test.
I had to tweak it to have it work
(use:
        fd, payload = passfd.recvfd(conn.fileno())
instead of:
        fd = passfd.recvfd(conn.fileno())
)

This is a r1058621 regression, where somehow "char *flusher" has been turned into a "char flusher[]". So it is been broken since the beginning of 2.4.x

After this change (i.e. r1058621), 'flusher' is no more a pointer (NULL'ed when the structure it belongs to is created) but the address of an array within a structure. It can not be NULL anymore.
So, we now have to look at the content of the array itself to see if it has been initialized or if we have to use the default value instead.

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

CHANGES
docs/manual/mod/mod_proxy.xml
docs/manual/mod/mod_proxy_fdpass.xml
modules/proxy/mod_proxy_fdpass.c

diff --git a/CHANGES b/CHANGES
index c456ec4bce1247597020329e795241628c04be45..c28f8ab2960177529066b3b10c3e258ea238800a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,12 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.0
 
+  *) mod_proxy_fdpass: Fix AH01153 error when using the default configuration.
+     In earlier version of httpd, you can explicitelly set the 'flusher' parameter
+     to 'flush' as a workaround. (i.e. flusher=flush)
+     Add documentation for the 'flusher' parameter when defining a proxy worker.
+     [Christophe Jaillet]
+
   *) mod_ssl: For the "SSLStaplingReturnResponderErrors off" case, make sure
      to only staple responses with certificate status "good". [Kaspar Brand]
 
index 56dc4450dfaf92fcaaf412863c0e9c3af6ce7dc5..b27ef9b59fd61d93eebcbb441f77cee3f574cde2 100644 (file)
@@ -1178,6 +1178,11 @@ ProxyPass "/example" "http://backend.example.com" max=20 ttl=120 retry=300
         connection will not be used again; it will be closed at some
         later time.
     </td></tr>
+    <tr><td>flusher</td>
+        <td>flush</td>
+        <td><p>Name of the provider used by <module>mod_proxy_fdpass</module>.
+        See the documentation of this module for more details.</p>
+    </td></tr>
 
     </table>
 
index 5d61836d79ba161e77defd5992aceabd378e9696..745ad142cbfaa52074806a13cdb60ea1788f70b7 100644 (file)
 
     <p>The module has a <code>proxy_fdpass_flusher</code> provider interface,
     which allows another module to optionally send the response headers, or even
-    the start of the response body.  The default flush provider disables keep-alive,
-    and sends the response headers, letting the external process just send a
-    response body.</p>
+    the start of the response body.  The default <code>flush</code> provider
+    disables keep-alive, and sends the response headers, letting the external
+    process just send a response body.
+    </p>
+    
+    <p>In order to use another provider, you have to set the <code>flusher</code>
+    parameter in the <directive module="mod_proxy">ProxyPass</directive> directive.
+    </p>
 
     <p>At this time the only data passed to the external process is the client
     socket. To receive a client socket, call recvfrom with an allocated
index 6f550c0e3760554b4f97e33ceb6834bae497b893..01462f101f9b08a35b5af32387657e42c9256f21 100644 (file)
@@ -57,7 +57,6 @@ static apr_status_t get_socket_from_path(apr_pool_t *p,
     *out_sock = NULL;
 
     rv = apr_socket_create(&s, AF_UNIX, SOCK_STREAM, 0, p);
-
     if (rv != APR_SUCCESS) {
         return rv;
     }
@@ -72,7 +71,6 @@ static apr_status_t get_socket_from_path(apr_pool_t *p,
     return APR_SUCCESS;
 }
 
-
 static apr_status_t send_socket(apr_pool_t *p,
                                 apr_socket_t *s,
                                 apr_socket_t *outbound)
@@ -119,7 +117,6 @@ static apr_status_t send_socket(apr_pool_t *p,
         return errno;
     }
 
-
     return APR_SUCCESS;
 }
 
@@ -149,7 +146,7 @@ static int proxy_fdpass_handler(request_rec *r, proxy_worker *worker,
 
     {
         int status;
-        const char *flush_method = worker->s->flusher ? worker->s->flusher : "flush";
+        const char *flush_method = *worker->s->flusher ? worker->s->flusher : "flush";
 
         proxy_fdpass_flush *flush = ap_lookup_provider(PROXY_FDPASS_FLUSHER,
                                                        flush_method, "0");
@@ -191,7 +188,6 @@ static int proxy_fdpass_handler(request_rec *r, proxy_worker *worker,
         ap_set_core_module_config(r->connection->conn_config, dummy);
     }
 
-
     return OK;
 }