Hi,<br><br>well, it isn't really a deadlock, but I think it is something wrong....<br><br>in my channel driver, I have a fax detection procedure that calls ast_exists_extensions() to check if there is a 'fax' exten available to jump for.
<br><br>My test environment is an Asterisk box with FXO interface and another non-asterisk box with FXS interface. The FXS side originates the call and the asterisk box answer the call.<br><br>I always used the following dialplan for testing:
<br><br>exten => s,1,Answer(1000);<br>exten => s,n,Record(test:ulaw|0|0)<br>exten => s,n,NoOp(${REMOTESTATIONID})<br><br>When the Asterisk side answer the call, the FXS side starts a Fax transmit. Of course the fax won't be received since there is no Rx application running on Asterisk side.
<br><br>The problem is that, when the Asterisk detects the fax signal and calls ast_exists_extensions(), the function ast_service_stop() only returns when the call finishes. I followed the stack and it seems that the ast_service_stop function stay the following point:
<br><br><pre class="fragment">00234 <span class="comment">/* Wait for it to un-block */</span>
<a name="l00235"></a>00235 <span class="keywordflow">while</span> (<a class="code" href="http://www.asterisk.org/doxygen/1.4/utils_8h.html#0cba63300a5690b7f297b26179882cd9">ast_test_flag</a>(<a class="code" href="http://www.asterisk.org/doxygen/1.4/structasent.html#24fea160601399d6d7a15f28b22bebd7">
chan</a>, <a class="code" href="http://www.asterisk.org/doxygen/1.4/channel_8h.html#d032a9ab2ed31c90af611a3c6221925306284ba3d5b82164197739aff2f52568">AST_FLAG_BLOCKING</a>))<br><a name="l00236"></a>00236 usleep(1000);
</pre><br>So, If my call takes 3 minutes, the Asterisk will stay on that point for 3 minutes and return only to hangup.<br><br>Also, I tested using Asterisk 1.4.14 and this problem doesn't happen. I saw that 1.4.15 has a lot of changes on that function, to keep dtmf frames but I couldn't figure out why these changes starts to cause the problem in
1.4.15 since that loop exists on both versions.<br><br>Any idea?<br clear="all"><br><i>Note: I used the Record() application because it has the same loop to wait finish that my fax rx application has. I swapped them to be sure that it is not only a problem in my application.
<br></i><br>-- <br>--------------<br>Paulo Garcia<br><br>