<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    <div class="moz-cite-prefix">On 6/22/12 11:13 AM, Peter Dunkley
      wrote:<br>
    </div>
    <blockquote
      cite="mid:1340356434.2354.11.camel@pd-notebook-linux.croc.internal"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <meta name="GENERATOR" content="GtkHTML/4.4.2">
      Hi,<br>
      <br>
      I am just trying to work out exactly what needs to be updated in
      the Kamailio core/parser for WebSockets.<br>
      <br>
      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?<br>
      <br>
      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...<br>
    </blockquote>
    <br>
    indeed it might be hard to hit all at once, but it can be fixed as
    it goes on...<br>
    <br>
    <blockquote
      cite="mid:1340356434.2354.11.camel@pd-notebook-linux.croc.internal"
      type="cite">
      <br>
      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).&nbsp; But are there updates
      needed in the following areas (and any ideas where in the code I
      should look)?
      <ul>
        <li>forward_no_connect() </li>
        <li>the proto core variable </li>
        <li>the snd_proto core variable </li>
      </ul>
    </blockquote>
    <br>
    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.<br>
    <br>
    <br>
    <blockquote
      cite="mid:1340356434.2354.11.camel@pd-notebook-linux.croc.internal"
      type="cite">
      <ul>
        <li>Is a WS keyword (like SCTP/TCP/TLS/UDP) needed </li>
      </ul>
    </blockquote>
    Yes, IMO, useful for detecting the incoming protocol<br>
    <blockquote
      cite="mid:1340356434.2354.11.camel@pd-notebook-linux.croc.internal"
      type="cite">
      <ul>
        <li>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 </li>
      </ul>
    </blockquote>
    <br>
    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.<br>
    <br>
    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?<br>
    <br>
    <blockquote
      cite="mid:1340356434.2354.11.camel@pd-notebook-linux.croc.internal"
      type="cite">
      <ul>
        <li>Are there any modules (rr, nathelper?) that need to be
          updated
        </li>
      </ul>
    </blockquote>
    <br>
    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<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <blockquote
      cite="mid:1340356434.2354.11.camel@pd-notebook-linux.croc.internal"
      type="cite">
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - <a class="moz-txt-link-freetext" href="http://asipto.com/u/katu">http://asipto.com/u/katu</a>
Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - <a class="moz-txt-link-freetext" href="http://asipto.com/u/kpw">http://asipto.com/u/kpw</a></pre>
  </body>
</html>