[SR-Users] apache 2.4 wstunnel

Juha Heinanen jh at tutpro.com
Wed Apr 8 15:28:23 CEST 2015


Daniel-Constantin Mierla writes:

> It still not clear to me what is going (or expected) to happen
> afterwards. Will this connection be http or websocket? Because websocket
> requires framing of the data. Http stays tcp streaming connection.
> 
> Given that it is started as HTTP but no Upgrade is required, I guess
> that Apache is expecting to deal with http further. And then practically
> is not websocket and should not be considered as such.
> 
> Anyhow, perhaps you can look inside the websocket function and try to
> ignore the parts dealing with the missing headers. Then see what apache
> sends next. You can eventually send a 101 reply with some forged
> Sec-WebSocket-Accept from config file just to emulate and see the
> results. Then if it is websocket transmission, then websocket module can
> be adjusted to cope with this situation.

i removed CONNECTION and UPGRADE from ws_handle_handshake
REQUIRED_HEADERS:

#define REQUIRED_HEADERS	(CONNECTION | UPGRADE | SEC_WEBSOCKET_KEY\
					| SEC_WEBSOCKET_PROTOCOL\
					| SEC_WEBSOCKET_VERSION)

and in the config called ws_handle_handshake() if Sec-WebSocket-Protocol
header exists and has body 'sip'. after that websocket connections via
apache ws_tunnel worked fine.

in my opinion we could make the above change, since existence of
Connection and Upgrade headers can be checked in config rather than in
the code.  that is what the example websocket config does anyway:

    	if (($hdr(Upgrade) == "websocket") &&
                in_list("Upgrade", $hdr(Connection), ",") &&
    			($rm == "GET")) {

comments?

-- juha



More information about the sr-users mailing list