This is probably best filed as a Patch Jira ticket (<a href="http://jira.freeswitch.org/">http://jira.freeswitch.org/</a>), and it can be looked at and discussed by the core developers there. That makes it easier to track and gives a ticket number than can be put in any commit messages.<br>

<br>Thanks for the contribution. :)<br><br>-Steve<br><br><br><div class="gmail_quote">On 23 June 2011 19:43, Steve Richardson <span dir="ltr">&lt;<a href="mailto:steve@comrex.com">steve@comrex.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I noticed that the dialplan tools &quot;sleep&quot; function would not respond to<br>
&quot;break&quot; if the call did not have ready media (e.g., if it was still<br>
ringing and not bridged anywhere).<br>
<br>
The dptools sleep is just a wrapper call for switch_ivr_sleep(), and I<br>
made a small patch for it to look for a break in the case where the<br>
media was not ready.<br>
<br>
I don&#39;t know if this has a negative effect on other uses of<br>
switch_ivr_sleep() in freeswitch, but for my application this allows me<br>
to break a sleeping channel when the media is not ready, allowing it to<br>
proceed.  Instead of yielding for the full sleep time, it yields in<br>
small increments and checks for break after each yield.  I chose 20ms,<br>
but my application would probably tolerate 100ms without much impact.  I<br>
don&#39;t know if there&#39;s a more elegant way to do this, but I&#39;m certainly<br>
open to suggestion.<br>
<br>
Patch follows for your consideration:<br>
<br>
<br>
diff --git a/src/switch_ivr.c b/src/switch_ivr.c<br>
index 92eb97e..6c1202a 100644<br>
--- a/src/switch_ivr.c<br>
+++ b/src/switch_ivr.c<br>
@@ -151,7 +151,15 @@ SWITCH_DECLARE(switch_status_t)<br>
switch_ivr_sleep(switch_core_session_t *session,<br>
          */<br>
<br>
         if (!switch_channel_media_ready(channel)) {<br>
-               switch_yield(ms * 1000);<br>
+<br>
+               for (elapsed=0; elapsed&lt;(ms/20); elapsed++) {<br>
+                       if (switch_channel_test_flag(channel, CF_BREAK)) {<br>
+                               switch_channel_clear_flag(channel,<br>
CF_BREAK);<br>
+                               return SWITCH_STATUS_BREAK;<br>
+                       }<br>
+<br>
+                       switch_yield(20 * 1000);<br>
+               }<br>
                 return SWITCH_STATUS_SUCCESS;<br>
         }<br>
<br>
<br>
<br>
regards,<br>
Steve<br>
<br>
--<br>
*Stephen Richardson<br>
Senior Software Engineer*<br>
Comrex Corporation<br>
19 Pine Rd<br>
Devens MA 01434 USA<br>
v 978.784.1764<br>
f 978.784.1717<br>
<a href="mailto:steve@comrex.com">steve@comrex.com</a> &lt;mailto:<a href="mailto:steve@comrex.com">steve@comrex.com</a>&gt;<br>
<a href="http://www.comrex.com/" target="_blank">http://www.comrex.com/</a><br>
<br>
_______________________________________________<br>
Join us at ClueCon 2011, Aug 9-11, Chicago<br>
<a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a> 877-7-4ACLUE<br>
<br>
FreeSWITCH-dev mailing list<br>
<a href="mailto:FreeSWITCH-dev@lists.freeswitch.org">FreeSWITCH-dev@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-dev" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-dev</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
</blockquote></div><br><div style="visibility: hidden; left: -5000px; position: absolute; z-index: 9999; padding: 0px; margin-left: 0px; margin-top: 0px; overflow: hidden; word-wrap: break-word; color: black; font-size: 10px; text-align: left; line-height: 130%;" id="avg_ls_inline_popup">

</div>