<div dir="ltr">Hi.<div><br></div><div>I have a rather simple case:</div><div><br></div><div>SIP client calls FreeSwitch, then IVR lua script is being executed. In IVR script I do the following logic (in pseudo code):</div>
<div><br></div><div>session:answer();</div><div><br></div><div>while session:isReady() then</div><div>  do http request to external service</div><div>  if response is ok then</div><div>     session:execute(&quot;deflect&quot;, &quot;some other SIP URI&quot;);</div>
<div>  else</div><div>    do some other logic</div><div>  end</div><div>end</div><div><br></div><div>In dialplan I have something like this:</div><div><div>&lt;extension name=&quot;xxx&quot;&gt;</div><div>   &lt;condition field=&quot;destination_number&quot; expression=&quot;^\d+$&quot;&gt;</div>
<div>      &lt;action application=&quot;set&quot; data=&quot;default_language=ru&quot;/&gt;</div><div>      &lt;action application=&quot;lua&quot; data=&quot;/etc/freeswitch/scripts/ivr/main.lua&quot;/&gt;</div><div>   &lt;/condition&gt;</div>
<div>&lt;/extension&gt;</div></div><div><br></div><div>SIP message flow looks like following:</div><div>INVITE --&gt;</div><div>            &lt;-- Trying</div><div>            &lt;-- OK with SDP</div><div>ACK    --&gt;</div>
<div>           &lt;-- REFER</div><div><br></div><div>From my understanding of SIP (which obviously may be wrong:)) I expect session to become ready (session:isReady returns true) only after FreeSwitch receives ACK from SIP client. But seems that it&#39;s not so, because if I introduce small delay in SIP client before sending ACK it receives REFER before ACK is being send to FreeSwitch.</div>
<div><br></div><div>So as result I have several questions:</div><div><ul><li>Is it expected that FreeSwitch doesn&#39;t wait for ACK?</li><li>Are the any options to change default behaviour expect introducing some seconds delay after session is answered?</li>
</ul><div><br></div>-- <br>Best regards.
</div></div>