<div dir="ltr">We don't see the issue when using the standard lookup() function, only when we start manually appending branches with the results from  reg_fetch_contact()<div><br></div><div>Thanks</div><div>Matthew</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 17, 2021 at 7:18 AM Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com">miconda@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <p>Hello,</p>
    <p><br>
    </p>
    <div>On 11.03.21 10:55, Marrold wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">Hi Daniel,
        <div><br>
        </div>
        <div>I didn't spot those TCPOPs functions, I'll give them a try
          and let you know how I get on.</div>
        <div><br>
        </div>
        <div>Do you have any idea why Kamailio is
          intermittently selecting the wrong connection using ID vs peer
          address? <br>
        </div>
      </div>
    </blockquote>
    <p><br>
    </p>
    <p>have you tried and got that with lookup("location") or only with
      your script-based reg_fetch_contact()?</p>
    <p>Cheers,<br>
      Daniel<br>
    </p>
    <blockquote type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>Thanks for the suggestions.</div>
        <div>Matthew</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Wed, Mar 10, 2021 at 7:27
          AM Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div>
            <p>Hello,</p>
            <p>a while ago I did some work to make possible to specify
              the outgoing tcp connection id, see:</p>
            <p>  *
              <a href="https://www.kamailio.org/docs/modules/stable/modules/tcpops.html#tcpops.f.tcp_set_otcpid" target="_blank">https://www.kamailio.org/docs/modules/stable/modules/tcpops.html#tcpops.f.tcp_set_otcpid</a></p>
            <p>And the next function after it.</p>
            <p>However, the testing was minimal, maybe not verifying the
              entire chain with t_relay()/forward(). Even more, the
              specifying of the outbound tcp connection was supposed to
              be done internally by the lookup("location"), the
              functions from tcpops being added for more config
              flexibility, suitable for single branch forwarding or
              branch_route blocks.</p>
            <p>However, in your seem to do manual processing with
              reg_fetch_contacts(), not rely on lookup location. You can
              test with master and use $sbranch(...) and corresponding
              functions from pv module, instead of setting the r-uri and
              append_branch().</p>
            <p>Cheers,<br>
              Daniel<br>
            </p>
            <div>On 10.03.21 06:00, Marrold wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">Hi,<br>
                <br>
                I've done a bit more digging and realised that $conid is
                read-only, and only available for an inbound connection
                - so I dont think it will achieve what I need.
                <div><br>
                </div>
                <div>I did a bit more troubleshooting and observed the
                  differences in the debug log between two identical
                  calls:
                  <div><br>
                    This example failed - the INVITEs went out to the
                    incorrect endpoint / TCP connection. The "ulc_conid"
                    from the location table for the TCP endpoint is 13:<br>
                    <br>
                  </div>
                  <div><font face="monospace">Mar  9 10:30:20 proxy-01
                      /sbin/kamailio[27014]: ERROR: <script>:
                      Adding to main branch. ua: Yealink SIP-T42G
                      29.83.0.120 ru: <a href="http://sip:442079460000@10.0.130.218:5060" target="_blank">sip:442079460000@10.0.130.218:5060</a>
                      du: sip:<a href="http://203.0.113.1:1046" target="_blank">203.0.113.1:1046</a> ulc_conid:
                      0 flags: 192 ci:
                      162e3e84-4036-48d7-a1d1-79cc92b7cea4-2-1@sip-server-01<br>
                      Mar  9 10:30:20 proxy-01 /sbin/kamailio[27014]:
                      ERROR: <script>: Adding to child branch. ua:
                      Yealink SIP-T58 58.85.0.5 ru: <a>sip:442079460000@10.0.130.241:50130;transport=TCP</a>
                      du: <a>sip:203.0.113.1:50130;transport=tcp</a>
                      ulc_conid: 13  flags: 192 ci:
                      162e3e84-4036-48d7-a1d1-79cc92b7cea4-2-1@sip-server-01<br>
                      <br>
                    </font>The debug log shows the wrong connection was
                    found <i>by id, </i>which in this case was 2, but
                    should have been 13:</div>
                  <div><br>
                    <font face="monospace">Mar  9 10:30:21 proxy-01
                      /sbin/kamailio[27014]: INFO: <script>:
                      ONSEND: rm: INVITE ru: <a href="http://sip:442079460000@10.0.130.218:5060" target="_blank">sip:442079460000@10.0.130.218:5060</a>
                      du: sip:<a href="http://203.0.113.1:1046" target="_blank">203.0.113.1:1046</a>
                      proto: udp src: <a href="http://185.28.212.61:5060" target="_blank">185.28.212.61:5060</a>
                      dest: <a href="http://203.0.113.1:1046" target="_blank">203.0.113.1:1046</a> ci:
162e3e84-4036-48d7-a1d1-79cc92b7cea4-2-1@sip-server-01</font><br>
                    <font face="monospace">Mar  9 10:30:21 proxy-01
                      /sbin/kamailio[27014]: INFO: <script>:
                      ONSEND: rm: INVITE ru: <a href="http://sip:442079460000@10.0.130.218:5060" target="_blank">sip:442079460000@10.0.130.218:5060</a>
                      du: sip:<a href="http://203.0.113.1:1046" target="_blank">203.0.113.1:1046</a>
                      proto: tcp src: <a href="http://185.28.212.61:5062" target="_blank">185.28.212.61:5062</a>
                      dest: <a href="http://203.0.113.1:50130" target="_blank">203.0.113.1:50130</a> ci:
162e3e84-4036-48d7-a1d1-79cc92b7cea4-2-1@sip-server-01</font><br>
                    <font face="monospace">Mar  9 10:30:21 proxy-01
                      /sbin/kamailio[27014]: DEBUG: <core>
                      [core/tcp_main.c:1651]: _tcpconn_find(): found
                      connection by id: 2</font><br>
                    <font face="monospace">Mar  9 10:30:21 proxy-01
                      /sbin/kamailio[27014]: DEBUG: <core>
                      [core/tcp_main.c:2545]: tcpconn_send_put(): found
                      fd in cache (5, 0x7fedc49d2448, 2)</font><br>
                    <br>
                    This example worked - the INVITEs went out to the
                    correct endpoints / TCP connections. The "ulc_conid"
                    from the location table for the TCP endpoint is
                    still 13:</div>
                  <div><br>
                    <font face="monospace">Mar  9 10:42:30 proxy-01
                      /sbin/kamailio[27016]: ERROR: <script>:
                      Adding to main branch. ua: Yealink SIP-T42G
                      29.83.0.120 ru: <a href="http://sip:442079460000@10.0.130.218:5060" target="_blank">sip:442079460000@10.0.130.218:5060</a>
                      du: sip:<a href="http://203.0.113.1:1046" target="_blank">203.0.113.1:1046</a> ulc_conid:
                      0 flags: 192 ci:
                      95ba0691-bdfc-4293-b99d-d46946cb5180-2-1@sip-server-01<br>
                      Mar  9 10:42:30 proxy-01 /sbin/kamailio[27016]:
                      ERROR: <script>: Adding to child branch. ua:
                      Yealink SIP-T58 58.85.0.5 ru: <a>sip:442079460000@10.0.130.241:50130;transport=TCP</a>
                      du: <a>sip:203.0.113.1:50130;transport=tcp</a>
                      ulc_conid: 13 flags: 192 ci:
                      95ba0691-bdfc-4293-b99d-d46946cb5180-2-1@sip-server-01</font><br>
                    <br>
                    The debug log shows the correct connection was found
                    <i>by peer address </i>and determined the correct
                    connection 13:</div>
                  <div><br>
                    <font face="monospace">Mar  9 10:42:31 proxy-01
                      /sbin/kamailio[27016]: INFO: <script>:
                      ONSEND: rm: INVITE ru: <a href="http://sip:442079460000@10.0.130.218:5060" target="_blank">sip:442079460000@10.0.130.218:5060</a>
                      du: sip:<a href="http://203.0.113.1:1046" target="_blank">203.0.113.1:1046</a>
                      proto: udp src: <a href="http://185.28.212.61:5060" target="_blank">185.28.212.61:5060</a>
                      dest: <a href="http://203.0.113.1:1046" target="_blank">203.0.113.1:1046</a>
                      conid: <null> ci:
                      95ba0691-bdfc-4293-b99d-d46946cb5180-2-1@sip-server-01<br>
                      Mar  9 10:42:31 proxy-01 /sbin/kamailio[27016]:
                      INFO: <script>: ONSEND: rm: INVITE ru: <a href="http://sip:442079460000@10.0.130.218:5060" target="_blank">sip:442079460000@10.0.130.218:5060</a>
                      du: sip:<a href="http://203.0.113.1:1046" target="_blank">203.0.113.1:1046</a>
                      proto: tcp src: <a href="http://185.28.212.61:5062" target="_blank">185.28.212.61:5062</a>
                      dest: <a href="http://203.0.113.1:50130" target="_blank">203.0.113.1:50130</a>
                      conid: <null> ci:
                      95ba0691-bdfc-4293-b99d-d46946cb5180-2-1@sip-server-01<br>
                      Mar  9 10:42:31 proxy-01 /sbin/kamailio[27016]:
                      DEBUG: <core> [core/tcp_main.c:1670]:
                      _tcpconn_find(): found connection by peer address
                      (id: 13)<br>
                      Mar  9 10:42:31 proxy-01 /sbin/kamailio[27016]:
                      DEBUG: <core> [core/tcp_main.c:2548]:
                      tcpconn_send_put(): tcp connection found
                      (0x7fedc49ce0e8), acquiring fd<br>
                    </font><br>
                    Additionally I checked the connection IDs and IPs /
                    Ports before a failed and working call and they had
                    not changed, it was the same TCP connection - so it
                    doesn't appear to be some interaction with a
                    connection closing or changing. We also don't see
                    this issue using <font face="arial, sans-serif">the
                      standard <span style="background-color:rgb(252,255,252);color:rgb(0,0,0)">lookup</span>()
                      function.</font><br>
                    <br>
                    Does anyone know why Kamailio is intermittently
                    switching between finding by peer address and id,
                    and why it's using the wrong ID? <br>
                    <br>
                    Thanks again<br>
                    Matthew<br>
                    <br>
                  </div>
                </div>
              </div>
              <br>
              <div class="gmail_quote">
                <div dir="ltr" class="gmail_attr">On Tue, Mar 9, 2021 at
                  8:56 AM Marrold <<a href="mailto:kamailio@marrold.co.uk" target="_blank">kamailio@marrold.co.uk</a>>
                  wrote:<br>
                </div>
                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                  <div dir="ltr">Hi all,
                    <div><br>
                    </div>
                    <div>I'm currently adding a feature to our Kamailio
                      configuration to fork calls based on user agent.</div>
                    <div><br>
                    </div>
                    <div>To do so I'm getting the registered endpoints
                      with reg_fetch_contacts() iterating through and
                      matching on them, then using seturi() /
                      append_branch() and setting the dst-uri and flags
                      as required.</div>
                    <div><br>
                    </div>
                    <div>However, calls are intermittently going to the
                      wrong TCP connection, despite the logs showing the
                      correct destination IP and port in the ONSEND
                      route.</div>
                    <div><br>
                    </div>
                    <div>Looking in the location table I can see each
                      registration has a connection_id, and the debug
                      log indicates it's finding the connection by ID:</div>
                    <div><br>
                    </div>
                    <div> DEBUG: <core> [core/tcp_main.c:1651]:
                      _tcpconn_find(): found connection by id: 3<br>
                    </div>
                    <div><br>
                    </div>
                    <div>Is there a way to set the conid per branch? Is
                      it necessary?<br>
                    </div>
                    <div><br>
                    </div>
                    <div>We're using kamailio 5.3.3 on Debian 10.</div>
                    <div><br>
                    </div>
                    <div>Thanks</div>
                    <div>Matthew</div>
                  </div>
                </blockquote>
              </div>
              <br>
              <fieldset></fieldset>
              <pre>_______________________________________________
Kamailio (SER) - Users Mailing List
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
            </blockquote>
            <pre cols="72">-- 
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank">www.linkedin.com/in/miconda</a>
Funding: <a href="https://www.paypal.me/dcmierla" target="_blank">https://www.paypal.me/dcmierla</a></pre>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <pre cols="72">-- 
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank">www.linkedin.com/in/miconda</a>
Funding: <a href="https://www.paypal.me/dcmierla" target="_blank">https://www.paypal.me/dcmierla</a></pre>
  </div>

</blockquote></div>