[SR-Users] apache 2.4 wstunnel

Muhammad Shahzad shaheryarkh at gmail.com
Wed Apr 8 21:32:12 CEST 2015


i somewhat agree with Daniel. The wstunnel should forward Connection and
Upgrade headers, instead of absorbing them. Otherwise kamailio or whatever
back-end server you may use will never know it is WS connection, thus would
treat the connection in simple HTTP context.

In my opinion, Nginx has a better solution then apache for WS proxy. It
allows to define "extra" headers that the proxy service is suppose to
forward to backend server, so that back-end server have full understanding
of client characteristics (including the connection type being WS instead
of HTTP).

Have a look at this for more details,

http://nginx.com/blog/websocket-nginx/

Hope this helps.

Thank you.



On Wed, Apr 8, 2015 at 5:31 PM, Daniel-Constantin Mierla <miconda at gmail.com>
wrote:

>
>
> On 08/04/15 15:28, Juha Heinanen wrote:
> > 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?
>
> I think this behaviour should be made based on a new parameter for the
> module, defaulting to the current behavior -- using the http/websocket
> proxy is not a common scenario. Also, I am not sure how valid is to
> expect switching to websocket connection without demanding it. Plus, in
> this way the upgrade to newer version is not breaking exiting configs.
>
> Cheers,
> Daniel
>
> --
> Daniel-Constantin Mierla
> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Kamailio World Conference, May 27-29, 2015
> Berlin, Germany - http://www.kamailioworld.com
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150408/0ea5ceb7/attachment.html>


More information about the sr-users mailing list