Hello,
On 6/22/12 11:13 AM, Peter Dunkley
wrote:
Hi,
I am just trying to work out exactly what needs to be updated in
the Kamailio core/parser for WebSockets.
I already know that the Via: parser needs to be updated to
understand the WS and WSS transports, and the URI parser needs to
be updated to understand the the WS transport, but is there
anything else?
I'd appreciate it if anyone has any ideas about what else might
need changed (and where in the code), as my guessing at this could
be a bit hit-and-miss...
indeed it might be hard to hit all at once, but it can be fixed as
it goes on...
I don't plan to add a forward_ws() function to core because I
don't think it'll work (or at least not in all cases as servers
cannot initiate WebSocket connections). But are there updates
needed in the following areas (and any ideas where in the code I
should look)?
- forward_no_connect()
- the proto core variable
- the snd_proto core variable
these are part of configuration file language, as special tokens --
the grammar of the config file is handled in cfg.lex and cfg.y. Then
the interpretation is in action.c, with fixup and helpers in
route_struct.{c,h} and route.{c,h}, and it may go through other
files. I can help with flex/yacc part if needed.
- Is a WS keyword (like SCTP/TCP/TLS/UDP) needed
Yes, IMO, useful for detecting the incoming protocol
- Are the pseudo variables (for example, I know that the
mutable variable $du needs to do the right thing as this is
fundamental to being able to route requests), transformations,
and selects that need to be updated
The $du is practically just returning/setting a string, the
interpretation is done by internal relay/forward functions. There
are some pv/selects that return the protocol, they need updates, but
should be trivial once the core part of defining the protocol types
(e.g., like PROTO_WS/PROTO_WSS) and updating the uri parser and
socket structures.
Btw, there will be dedicated sockets to listen for ws/wss or the
tcp/tls will be used and the connection type upgraded to ws/wss?
- Are there any modules (rr, nathelper?) that need to be
updated
There should be some helper functions that build URIs based on
internal structures, where the protocol is used. Not sure all the
modules use them or have own implementation. Perhaps searching on
PROTO_TLS or another one will reveal the places where to add
PROTO_WS/_WSS
Cheers,
Daniel
--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - http://asipto.com/u/katu
Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - http://asipto.com/u/kpw