<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    by stateless dispatcher do you mean using forward() to send out the
    INVITE?<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <br>
    <div class="moz-cite-prefix">On 11/28/12 1:40 PM, SIP Mailing-list
      wrote:<br>
    </div>
    <blockquote
cite="mid:CANYyo2aMMYxZb+edz_7v_CH=0N_OPd4gy2EsdHT=6tfRA0MUFw@mail.gmail.com"
      type="cite">Further edit:<br>
      <br>
      Actually I tried using ds_select_dst to forward the ACK on the
      unconfirmed (unanswered; 603 Decline) call but it routed to
      another destination.<br>
      My work-around involves using ds_next_dst to send the ACK to *all*
      destinations.<br>
      <br>
      Does anyone know if there is a way to fix this behaviour?<br>
      Any help is much appreciated!<br>
      <br>
      Cheers,<br>
      Richard<br>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">On 27 November 2012 20:12, SIP
          Mailing-list <span dir="ltr">&lt;<a moz-do-not-send="true"
              href="mailto:sip@racitup.com" target="_blank">sip@racitup.com</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi guys,<br>
            <br>
            I wonder if someone could sanity check something for me.<br>
            <br>
            I currently have a simple load balancer set up using
            algorithm 10 (call load distribution) from the dispatcher
            module. I'm using Record-Routing so that I can clear down
            the call load record at the end of the call.<br>
            Everything looked like it was working okay until I just
            spotted a problem that I think might be a bug. It's to do
            with ACKs to non-200 responses.<br>
            <br>
            In a normal call, the flow goes:<br>
            <span style="font-family:courier new,monospace">UAC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
              &nbsp;&nbsp;&nbsp; Proxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UAS<br>
              1&nbsp;&nbsp; &nbsp; INVITE --&gt;<br>
              2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INVITE--&gt;<br>
              3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;-- 200 OK<br>
              --- ds_load_update()<br>
              4&nbsp;&nbsp;&nbsp;&nbsp; &lt;-- 200 OK<br>
              5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACK --&gt;<br>
              6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACK --&gt;</span><br>
            Now between step 3 and 4 the proxy runs ds_load_update which
            according to the documentation "set internal state to
            confirmed for the call load" entry in the internal call
            state store. This means the proxy knows where to send the
            ACK at step 5 because it is safely in the call state store
            so you can use ds_select_dst again on the ACK to get it to
            the right place. Works fine!<br>
            <br>
            Now consider the non-200 case:<br>
            <span style="font-family:courier new,monospace">UAC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
              &nbsp;&nbsp; Proxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UAS<br>
              1&nbsp;&nbsp; &nbsp; INVITE --&gt;<br>
              2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INVITE--&gt;<br>
              3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;-- 603 Decline<br>
              --- ds_load_unset()<br>
              4&nbsp; &lt;-- 603 Decline<br>
              5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACK --&gt;<br>
              6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACK --&gt; ???</span><br>
            Between step 3 and 4 the proxy is supposed to run
            ds_load_unset() which unconditionally removes the call from
            the call state store. Now when the ACK comes in at step 5,
            the proxy has no record of the call and so doesn't know
            where to send the ACK. This results in retried Declines and
            ACKs. Broken :-(<br>
            <br>
            If the proxy doesn't run ds_load_unset() on the 603
            response, is there some kind of timer that will cause the
            call to be removed from the call state store on unconfirmed
            calls?<br>
            <br>
            I don't think I can run ds_load_unset on the ACK because
            there's nothing in the ACK that tells me it is because of a
            603, rather than a 200.<br>
            <br>
            Edit: actually there is! The Route header is present on the
            200 ACK, but <b>not</b> on the 3xx to 6xx ACK. Maybe I can
            use loose_route... Anyway, any thoughts would be
            appreciated!<br>
            <br>
            Cheers,<br>
            Richard<br>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a>
<a class="moz-txt-link-freetext" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
    </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></pre>
  </body>
</html>