<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hello,<br>
    </p>
    if you set use_received param for path module, then the received
    address in Route header is set as dst uri, see:<br>
    <br>
      -
<a class="moz-txt-link-freetext" href="https://www.kamailio.org/docs/modules/stable/modules/path.html#path.p.enable_r2">https://www.kamailio.org/docs/modules/stable/modules/path.html#path.p.enable_r2</a><br>
    <br>
    All you need to do is:<br>
    <br>
    loose_route();<br>
    t_relay();<br>
    <br>
    Note that loose_route() is dealing with a pre-loaded Route header in
    this case, see the readme of rr module for the return code.<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <br>
    <div class="moz-cite-prefix">On 13.02.18 12:05, Tihomir Culjaga
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAJoKKdU1zuPHp1ur_O_KN=RW9MV7mD0d7bNxCvxd9u=HAowORQ@mail.gmail.com">
      <div dir="ltr">Hi Daniel,
        <div><br>
        </div>
        <div>thanks for you e-mail... i will try that approach.</div>
        <div><br>
        </div>
        <div>in the main time i exploited the "received" parameter in
          route header sent by freeswitch and with a bit of manipulation
          i managed to rout the call back to WS client :=)</div>
        <div><br>
        </div>
        <div>Im will definitely try to enable r2 and come back with the 
          results.</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>--- snip ---</div>
        <div><br>
        </div>
        <div>
          <div>route[SIPOUT] {</div>
          <div>        if (!uri==myself) {</div>
          <div><br>
          </div>
          <div><br>
          </div>
          <div>                xlog("L_INFO", "ROUTE HEADER value:
            $hdr(Route)\n");</div>
          <div><br>
          </div>
          <div><br>
          </div>
          <div>                $var(rcv_regex)=
            $(hdr(Route){re.subst,/.*received=(.*)/\1/});</div>
          <div><br>
          </div>
          <div>                $var(ip)=
            $(var(rcv_regex){s.select,0,~});</div>
          <div>                $var(port)=
            $(var(rcv_regex){s.select,1,~});</div>
          <div>                $var(proto_number)=
            $(var(rcv_regex){s.select,2,~});</div>
          <div><br>
          </div>
          <div>                if ($var(proto_number) == "1") {</div>
          <div>                        $var(trans) = "UDP";</div>
          <div><br>
          </div>
          <div>                } else if ($var(proto_number) == "6" ) {</div>
          <div>                        $var(trans) = "ws";</div>
          <div><br>
          </div>
          <div>                } else {</div>
          <div>                        # not interested for now</div>
          <div>                        
            <span
style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">$var(trans)
              = "TCP";</span>
          </div>
          <div>                }</div>
          <div><br>
          </div>
          <div>                $var(request_route_regex) = $var(ip) +
            ":" + $var(port) + ";transport=" +$var(trans);</div>
          <div><br>
          </div>
          <div>                xlog("L_INFO", "ROUTE HEADER - rcv_regex:
            $var(rcv_regex)\n");</div>
          <div>                xlog("L_INFO", "ROUTE HEADER - request
            route : $var(request_route_regex)\n");</div>
          <div><br>
          </div>
          <div><br>
          </div>
          <div>                append_hf("P-hint: outbound\r\n");</div>
          <div>                $ru="sip:" + $rU +
            "@"+$var(request_route_regex);</div>
          <div>                xlog("SCRIPT: Request uri = $ru\n");</div>
          <div>                route(RELAY);</div>
          <div>        }</div>
          <div>}</div>
        </div>
        <div><br>
        </div>
        <div>--- snip ---</div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On 13 February 2018 at 11:48,
          Daniel-Constantin Mierla <span dir="ltr"><<a
              href="mailto:miconda@gmail.com" target="_blank"
              moz-do-not-send="true">miconda@gmail.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div text="#000000" bgcolor="#FFFFFF">
              <p>Hello,</p>
              <p>you have an explicit set of $fs, which is setting the
                send socket. You have to do then when receiving from WS,
                not when going to WS.</p>
              <p>In 5.1, you can try to enable:</p>
              <p>  -
                <a class="m_5960866116094684756moz-txt-link-freetext"
href="https://www.kamailio.org/docs/modules/stable/modules/path.html#path.p.enable_r2"
                  target="_blank" moz-do-not-send="true">https://www.kamailio.org/docs/<wbr>modules/stable/modules/path.<wbr>html#path.p.enable_r2</a></p>
              <p>and then let kamailio do all about send socket (remove
                the assignments to $fs).</p>
              <p>Cheers,<br>
                Daniel<br>
              </p>
              <div>
                <div class="h5"> <br>
                  <div class="m_5960866116094684756moz-cite-prefix">On
                    09.02.18 22:57, Tihomir Culjaga wrote:<br>
                  </div>
                </div>
              </div>
              <blockquote type="cite">
                <div>
                  <div class="h5">
                    <div dir="ltr">
                      <div>Hi,</div>
                      <div><br>
                      </div>
                      <div>Im new to Kamailio so im sorry if some of my
                        questions will sound a bit wierd :=)</div>
                      <div><br>
                      </div>
                      <div>i have a setup like this: (Kamailio version
                        5.1)</div>
                      <div><br>
                      </div>
                      <div>UA > Kamailio > Freeswitch</div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div>Kamailio forwards registration to freeswitch
                        without saving location.</div>
                      <div><br>
                      </div>
                      <div>I have configured sip over websockets and im
                        able to register to Freeswitcha via kamailio.</div>
                      <div>Also, i use add_path_received() so kamailio
                        adds a path header to register messages</div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div>
                        <div>recv 945 bytes from
                          udp/[192.168.50.60]:5060 at 22:38:07.283809:</div>
                        <div> 
                           -----------------------------<wbr>------------------------------<wbr>-------------</div>
                        <div>   REGISTER <a
                            class="m_5960866116094684756moz-txt-link-freetext"
                            moz-do-not-send="true">sip:192.168.50.60</a>
                          SIP/2.0</div>
                        <div>   Via: SIP/2.0/UDP 192.168.50.60;branch=<wbr>z9hG4bKa929.<wbr>0f66d60c4333f4a3a9d83d41a63295<wbr>d9.0</div>
                        <div>   Via: SIP/2.0/WSS
                          192.0.2.110;rport=63296;<wbr>received=192.168.200.77;<wbr>branch=z9hG4bK6931435</div>
                        <div>   Max-Forwards: 69</div>
                        <div>   To: <<a
                            href="mailto:sip%3A1001@192.168.50.60"
                            target="_blank" moz-do-not-send="true">sip:1001@192.168.50.60</a>></div>
                        <div>   From: <<a
                            href="mailto:sip%3A1001@192.168.50.60"
                            target="_blank" moz-do-not-send="true">sip:1001@192.168.50.60</a>>;tag=<wbr>vq30modpgd</div>
                        <div>   Call-ID: dlnrna9o4ngn25fb9d1vi2</div>
                        <div>   CSeq: 196 REGISTER</div>
                        <div>   Authorization: Digest algorithm=MD5,
                          username="1001", realm="192.168.50.60",
                          nonce="744aaa14-4a86-4ce3-<wbr>b6d6-419b0a34ee90",
                          uri=<a
                            class="m_5960866116094684756moz-txt-link-rfc2396E"
                            moz-do-not-send="true">"sip:192.168.50.60"</a>,
                          response="<wbr>9b592b874474d4ffe5769f2410bace<wbr>ef",
                          qop=auth, cnonce="sf7ff0fp8tm5", nc=00000001</div>
                        <div>   Contact: <<a
                            href="mailto:sip%3A1001@192.0.2.110"
                            target="_blank" moz-do-not-send="true">sip:1001@192.0.2.110</a>;<wbr>transport=ws>;reg-id=1;+sip.<wbr>instance="<urn:uuid:587f4694-<wbr>7e55-46dc-a858-579a82556a20>";<wbr>expires=600</div>
                        <div>   Allow: ACK,CANCEL,INVITE,MESSAGE,BYE,<wbr>OPTIONS,INFO,NOTIFY,REFER</div>
                        <div>   Supported: path, gruu, 100rel, outbound</div>
                        <div>   User-Agent: SIP.js/0.7.0 BB</div>
                        <div>   Content-Length: 0</div>
                        <div>   Path: <a
                            class="m_5960866116094684756moz-txt-link-rfc2396E"
                            moz-do-not-send="true"><sip:192.168.50.60;lr;<wbr>received=192.168.200.77~63296~<wbr>6></a></div>
                        <div>   </div>
                        <div> 
                           -----------------------------<wbr>------------------------------<wbr>-------------</div>
                        <div>send 719 bytes to udp/[192.168.50.60]:5060
                          at 22:38:07.329444:</div>
                        <div> 
                           -----------------------------<wbr>------------------------------<wbr>-------------</div>
                        <div>   SIP/2.0 200 OK</div>
                        <div>   Via: SIP/2.0/UDP 192.168.50.60;branch=<wbr>z9hG4bKa929.<wbr>0f66d60c4333f4a3a9d83d41a63295<wbr>d9.0</div>
                        <div>   Via: SIP/2.0/WSS
                          192.0.2.110;rport=63296;<wbr>received=192.168.200.77;<wbr>branch=z9hG4bK6931435</div>
                        <div>   From: <<a
                            href="mailto:sip%3A1001@192.168.50.60"
                            target="_blank" moz-do-not-send="true">sip:1001@192.168.50.60</a>>;tag=<wbr>vq30modpgd</div>
                        <div>   To: <<a
                            href="mailto:sip%3A1001@192.168.50.60"
                            target="_blank" moz-do-not-send="true">sip:1001@192.168.50.60</a>>;tag=<wbr>Spya88DKU9gSQ</div>
                        <div>   Call-ID: dlnrna9o4ngn25fb9d1vi2</div>
                        <div>   CSeq: 196 REGISTER</div>
                        <div>   Contact: <<a
                            href="mailto:sip%3A1001@192.0.2.110"
                            target="_blank" moz-do-not-send="true">sip:1001@192.0.2.110</a>;<wbr>transport=ws>;expires=600</div>
                        <div>   Date: Fri, 09 Feb 2018 21:38:07 GMT</div>
                        <div>   User-Agent: FreeSWITCH-mod_sofia/1.6.19+<wbr>git~20171120T163416Z~<wbr>b1b21d0695~64bit</div>
                        <div>   Allow: INVITE, ACK, BYE, CANCEL,
                          OPTIONS, MESSAGE, INFO, UPDATE, REGISTER,
                          REFER, NOTIFY</div>
                        <div>   Supported: timer, path, replaces</div>
                        <div>   Path: <a
                            class="m_5960866116094684756moz-txt-link-rfc2396E"
                            moz-do-not-send="true"><sip:192.168.50.60></a>;lr;<wbr>received=192.168.200.77~63296~<wbr>6</div>
                        <div>   Content-Length: 0</div>
                        <div>   </div>
                        <div> 
                           -----------------------------<wbr>------------------------------<wbr>-------------</div>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div>Once, registered, im trying to originate a
                        call to the registered endpoint from freeswitch</div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div>this results in an invite like this:</div>
                      <div><br>
                      </div>
                      <div>
                        <div>send 1757 bytes to udp/[192.168.50.60]:5060
                          at 22:46:21.252549:</div>
                        <div> 
                           -----------------------------<wbr>------------------------------<wbr>-------------</div>
                        <div>   INVITE <a
                            href="mailto:sip%3A1001@192.0.2.110"
                            target="_blank" moz-do-not-send="true">sip:1001@192.0.2.110</a>;<wbr>transport=ws
                          SIP/2.0</div>
                        <div>   Via: SIP/2.0/UDP
                          192.168.50.65:15060;rport;<wbr>branch=z9hG4bKXHcX316pDgXZB</div>
                        <div>   Route: <a
                            class="m_5960866116094684756moz-txt-link-rfc2396E"
                            moz-do-not-send="true"><sip:192.168.50.60></a>;lr;<wbr>received=192.168.200.77~63296~<wbr>6</div>
                        <div>   Max-Forwards: 70</div>
                        <div>   From: "" <<a
                            href="mailto:sip%3A1002@192.168.50.65"
                            target="_blank" moz-do-not-send="true">sip:1002@192.168.50.65</a>>;tag=<wbr>tZQ393yprj7BK</div>
                        <div>   To: <<a
                            href="mailto:sip%3A1001@192.0.2.110"
                            target="_blank" moz-do-not-send="true">sip:1001@192.0.2.110</a>;<wbr>transport=ws></div>
                        <div>   Call-ID: 8212b700-8885-1236-08b3-<wbr>000c293ae94e</div>
                        <div>   CSeq: 118770326 INVITE</div>
                        <div>   Contact: <<a
                            href="http://sip:mod_sofia@192.168.50.65:15060"
                            target="_blank" moz-do-not-send="true">sip:mod_sofia@192.168.50.65:<wbr>15060</a>></div>
                        <div>   User-Agent: FreeSWITCH-mod_sofia/1.6.19+<wbr>git~20171120T163416Z~<wbr>b1b21d0695~64bit</div>
                        <div>   Allow: INVITE, ACK, BYE, CANCEL,
                          OPTIONS, MESSAGE, INFO, UPDATE, REGISTER,
                          REFER, NOTIFY</div>
                        <div>   Supported: timer, path, replaces</div>
                        <div>   Allow-Events: talk, hold, conference,
                          refer</div>
                        <div>   Content-Type: application/sdp</div>
                        <div>   Content-Disposition: session</div>
                        <div>   Content-Length: 891</div>
                        <div>   X-FS-Support: update_display,send_info</div>
                        <div>   Remote-Party-ID: <<a
                            href="mailto:sip%3A1002@192.168.50.65"
                            target="_blank" moz-do-not-send="true">sip:1002@192.168.50.65</a>>;<wbr>party=calling;screen=yes;<wbr>privacy=off</div>
                      </div>
                      <div><br>
                      </div>
                      <div>Freeswitch appends a route header to the
                        invite specifying kamailio as route and a
                        received with original uri.</div>
                      <div><br>
                      </div>
                      <div>well, here is the issue ... im failing to hit
                        the SIP over websocket client... Kamailio </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div>my RELAY route is like this</div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div>
                        <div>route[RELAY] {</div>
                        <div><br>
                        </div>
                        <div>        # enable additional event routes
                          for forwarded requests</div>
                        <div>        # - serial forking, RTP relaying
                          handling, a.s.o.</div>
                        <div>        if (is_method("INVITE|BYE|<wbr>SUBSCRIBE|UPDATE"))
                          {</div>
                        <div>               
                          if(!t_is_set("branch_route")) {</div>
                        <div>                        xlog("L_ALERT",
                          "Its a Branch, go manage that !!! 
                          <$ru>\n");</div>
                        <div>                       
                          t_on_branch("MANAGE_BRANCH");</div>
                        <div>                }</div>
                        <div>        }</div>
                        <div>        if (is_method("INVITE|SUBSCRIBE|<wbr>UPDATE"))
                          {</div>
                        <div>               
                          if(!t_is_set("onreply_route")) {</div>
                        <div>                        xlog("L_ALERT",
                          "its onreply_route, go manage !!! 
                          <$ru>\n");</div>
                        <div>                       
                          t_on_reply("MANAGE_REPLY");</div>
                        <div><br>
                        </div>
                        <div>                }</div>
                        <div>        }</div>
                        <div>        if (is_method("INVITE")) {</div>
                        <div>               
                          if(!t_is_set("failure_route")) {</div>
                        <div>                        xlog("L_ALERT",
                          "Its failure_route, go manage !!! 
                          <$ru>\n");</div>
                        <div>                       
                          t_on_failure("MANAGE_FAILURE")<wbr>;</div>
                        <div>                }</div>
                        <div>        }</div>
                        <div><br>
                        </div>
                        <div>        $fs = "udp:<a
                            href="http://192.168.50.60:5060"
                            target="_blank" moz-do-not-send="true">192.168.50.60:5060</a>";</div>
                        <div>        xlog("L_ALERT", "Trying to rely
                          !!!  <$ru>\n");</div>
                        <div>        if (!t_relay()) {</div>
                        <div>                xlog("L_ALERT", "failed to
                          rely !!!  <$ru>\n");</div>
                        <div>                sl_reply_error();</div>
                        <div>        }</div>
                        <div>        exit;</div>
                        <div>}</div>
                      </div>
                      <div><br>
                      </div>
                      <div>here is a part of the log:</div>
                      <div><br>
                      </div>
                      <div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: WARNING:
                          <core> [core/forward.c:231]:
                          get_send_socket2(): <span
                            style="background-color:rgb(255,255,0)">protocol/port
                            mismatch (forced udp:<a
                              href="http://192.168.50.60:5060"
                              target="_blank" moz-do-not-send="true">192.168.50.60:5060</a>,
                            to ws:<a href="http://192.0.2.110:5060"
                              target="_blank" moz-do-not-send="true">192.0.2.110:5060</a>)</span></div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: DEBUG: <core>
                          [core/msg_translator.c:424]: clen_builder():
                          content-length: 916 (916)</div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: WARNING:
                          <core> [core/msg_translator.c:2765]:
                          via_builder(): TCP/TLS connection (id: 0) for
                          WebSocket could not be found</div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: ERROR: <core>
                          [core/msg_translator.c:1980]:
                          build_req_buf_from_sip_req(): could not create
                          Via header</div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: ERROR: tm
                          [t_fwd.c:476]: prepare_new_uac(): could not
                          build request</div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: ERROR: tm
                          [t_fwd.c:1735]: t_forward_nonack(): failure to
                          add branches</div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: DEBUG: tm
                          [t_funcs.c:334]: t_relay_to():
                          t_forward_nonack returned error -2 (-2)</div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: DEBUG: tm
                          [t_funcs.c:352]: t_relay_to(): -2 error reply
                          generation delayed</div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]: ERROR: ***
                          cfgtrace:request_route=[RELAY]
                          c=[/etc/kamailio/kamailio.cfg] l=744 a=26
                          n=xlog</div>
                        <div>Feb  9 22:48:48 incfskamtest01
                          /usr/sbin/kamailio[14896]:<span
                            style="background-color:rgb(255,255,0)">
                            ALERT: <script>: failed to rely !!! 
                            <<a href="mailto:sip%3A1001@192.0.2.110"
                              target="_blank" moz-do-not-send="true">sip:1001@192.0.2.110</a>;<wbr>transport=ws></span></div>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div>is that because i set a $fu before t_relay()
                        ?</div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div>any idea how to approach the issue ?</div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                      <div><br>
                      </div>
                    </div>
                    <br>
                    <fieldset
                      class="m_5960866116094684756mimeAttachmentHeader"></fieldset>
                    <br>
                  </div>
                </div>
                <pre>______________________________<wbr>_________________
Kamailio (SER) - Users Mailing List
<a class="m_5960866116094684756moz-txt-link-abbreviated" href="mailto:sr-users@lists.kamailio.org" target="_blank" moz-do-not-send="true">sr-users@lists.kamailio.org</a>
<a class="m_5960866116094684756moz-txt-link-freetext" href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank" moz-do-not-send="true">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><span class="HOEnZb"><font color="#888888">
</font></span></pre>
                <span class="HOEnZb"><font color="#888888"> </font></span></blockquote>
              <span class="HOEnZb"><font color="#888888"> <br>
                  <pre class="m_5960866116094684756moz-signature" cols="72">-- 
Daniel-Constantin Mierla
<a class="m_5960866116094684756moz-txt-link-abbreviated" href="http://www.twitter.com/miconda" target="_blank" moz-do-not-send="true">www.twitter.com/miconda</a> -- <a class="m_5960866116094684756moz-txt-link-abbreviated" href="http://www.linkedin.com/in/miconda" target="_blank" moz-do-not-send="true">www.linkedin.com/in/miconda</a>
Kamailio Advanced Training - March 5-7, 2018, Berlin - <a class="m_5960866116094684756moz-txt-link-abbreviated" href="http://www.asipto.com" target="_blank" moz-do-not-send="true">www.asipto.com</a>
Kamailio World Conference - May 14-16, 2018 - <a class="m_5960866116094684756moz-txt-link-abbreviated" href="http://www.kamailioworld.com" target="_blank" moz-do-not-send="true">www.kamailioworld.com</a></pre>
                </font></span></div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla
<a class="moz-txt-link-abbreviated" href="http://www.twitter.com/miconda">www.twitter.com/miconda</a> -- <a class="moz-txt-link-abbreviated" href="http://www.linkedin.com/in/miconda">www.linkedin.com/in/miconda</a>
Kamailio Advanced Training - March 5-7, 2018, Berlin - <a class="moz-txt-link-abbreviated" href="http://www.asipto.com">www.asipto.com</a>
Kamailio World Conference - May 14-16, 2018 - <a class="moz-txt-link-abbreviated" href="http://www.kamailioworld.com">www.kamailioworld.com</a></pre>
  </body>
</html>