Commit 4542d7ea authored by Jean-Frederic Clere's avatar Jean-Frederic Clere
Browse files

Add upgrade parameter to mod_proxy_wstunnel.

That allows to upgrade to jboss-remoting for example
or to run an HTTP/1.1 backend that needs to upgrade to
WebSocket.
See also:
 https://issues.jboss.org/browse/JBCS-254
 https://issues.jboss.org/browse/JBCS-291


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1792092 13f79535-47bb-0310-9956-ffa450edef68
parent ea9402fa
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
                                                         -*- coding: utf-8 -*-
Changes with Apache 2.5.0

  *) mod_proxy_wstunnel: Add "upgrade" parameter to allow upgrade to other
     protocols.  [Jean-Frederic Clere]

  *) mod_substitute: Fix spurious AH01328 (Line too long) errors on EBCDIC
     systems.  [Eric Covener]

+10 −0
Original line number Diff line number Diff line
@@ -1208,6 +1208,16 @@ ProxyPass "/example" "http://backend.example.com" max=20 ttl=120 retry=300
        <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>
    <tr><td>secret</td>
        <td>-</td>
        <td><p>Value of secret used by <module>mod_proxy_ajp</module>.
        See the documentation of this module for more details.</p>
    </td></tr>
    <tr><td>upgrade</td>
        <td>WebSocket</td>
        <td><p>Protocol accepted in the Upgrade header by <module>mod_proxy_wstunnel</module>.
        See the documentation of this module for more details.</p>
    </td></tr>

    </table>

+5 −0
Original line number Diff line number Diff line
@@ -51,6 +51,11 @@ ProxyPass "/wss2/" "wss://echo.websocket.org/"
    </highlight>

<p>Load balancing for multiple backends can be achieved using <module>mod_proxy_balancer</module>.</p>

<p>In fact the module can be used to upgrade to other protocols, you can set the <code>upgrade</code>
parameter in the <directive type="ProxyPass" module="mod_proxy">ProxyPass</directive>
directive to allow the module to accept other protocol.
NONE means you bypass the check for the header but still upgrade to WebSocket.</p>
</summary>

<seealso><module>mod_proxy</module></seealso>
+6 −0
Original line number Diff line number Diff line
@@ -317,6 +317,12 @@ static const char *set_worker_param(apr_pool_t *p,
                                (int)sizeof(worker->s->secret));
        }
    }
    else if (!strcasecmp(key, "upgrade")) {
        if (PROXY_STRNCPY(worker->s->upgrade, val) != APR_SUCCESS) {
            return apr_psprintf(p, "upgrade protocol length must be < %d characters",
                                (int)sizeof(worker->s->upgrade));
        }
    }
    else {
        if (set_worker_hc_param_f) {
            return set_worker_hc_param_f(p, s, worker, key, val, NULL);
+1 −0
Original line number Diff line number Diff line
@@ -450,6 +450,7 @@ typedef struct {
    unsigned int     was_malloced:1;
    unsigned int     is_name_matchable:1;
    char      secret[PROXY_WORKER_MAX_SECRET_SIZE]; /* authentication secret (e.g. AJP13) */
    char      upgrade[PROXY_WORKER_MAX_SCHEME_SIZE];/* upgrade protocol used by mod_proxy_wstunnel */
} proxy_worker_shared;

#define ALIGNED_PROXY_WORKER_SHARED_SIZE (APR_ALIGN_DEFAULT(sizeof(proxy_worker_shared)))
Loading