<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/4271/">https://reviewboard.asterisk.org/r/4271/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On December 16th, 2014, 11:25 p.m. UTC, <b>Joshua Colp</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I think before accepting this as the solution we need to understand more about what is going on. I say this because ast_async_goto has logic which is supposed to handle this case:

        /* Channels in a bridge or running a PBX can be sent directly to the specified destination */
        if (ast_channel_is_bridged(chan) || ast_channel_pbx(chan)) {

So why in this case is the bridge in a state where we can't do an explicit goto? Is this check wrong?</pre>
 </blockquote>







</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I think the problem there is that channels that get originated and end up in bridges end up calling ast_bridge_join(). ast_bridge_join() takes no ownership responsibilities for the channel and assumes that whatever thread has called it can then perform any after bridge gotos, etc. In the case of origination to an application, though, this assumption does not hold up since there is no dedicated PBX thread for the channel calling ast_bridge_join().

So the check in ast_async_goto() may need tweaking to cover the case where the channel has joined a bridge from a non-PBX thread, or ast_bridge_join() could presumably start a PBX on channels that exit the bridge and need to then run dialplan.

But neither of these fixes would help the cases I outlined before where a channel is originated to a non-bridging application that then should result in the channel running dialplan.</pre>
<br />










<p>- Mark</p>


<br />
<p>On December 16th, 2014, 8:41 p.m. UTC, opticron wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers and Joshua Colp.</div>
<div>By opticron.</div>


<p style="color: grey;"><i>Updated Dec. 16, 2014, 8:41 p.m.</i></p>







<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-24591">ASTERISK-24591</a>


</div>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
Asterisk
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">When the AMI Redirect action is used with a channel bridged inside Stasis() and not running a pbx, the channel is hung up instead of proceeding to the desired location in dialplan. This change allows such channels to be Redirected properly by detecting the operation used by Redirect (ASYNCGOTO) and starting a pbx if necessary to allow the channel to execute dialplan at the desired location.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ran the test that found this bug and verified that it passed with the expected events. See review 4272 for the test in question.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>branches/13/res/ari/resource_channels.c <span style="color: grey">(429611)</span></li>

 <li>branches/13/main/pbx.c <span style="color: grey">(429611)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/4271/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>








  </div>
 </body>
</html>