<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/3522/">https://reviewboard.asterisk.org/r/3522/</a>
     </td>
    </tr>
   </table>
   <br />










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On May 7th, 2014, 3:41 p.m. UTC, <b>Matt Jordan</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://reviewboard.asterisk.org/r/3522/diff/1/?file=58291#file58291line2668" style="color: black; font-weight: bold; text-decoration: underline;">/branches/12/main/channel.c</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void ast_set_hangupsource(struct ast_channel *chan, const char *source, int force)</pre></td>

  </tr>
 </tbody>



 
 

 <tbody>

  <tr>
    <th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">2668</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span>|| !ast_framehook_list_contains_no_active(ast_channel_framehooks(chan));</pre></td>
    <th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">2668</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span>|| !ast_framehook_list_contains_no_active<span class="hl">_of_type</span>(ast_channel_framehooks(chan)<span class="hl">, AST_FRAME_VOICE</span>);</pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Should the audiohooks/other frame hooks be updated to report the types they consume?</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">The other framehooks I could find consumed voice frames so updating them wouldn't really change anything. I can do a full audit if you want though and make them explicit. As for audiohooks they aren't built upon framehooks and don't have this same problem.</pre>
<br />




<p>- Joshua</p>


<br />
<p>On May 5th, 2014, 6:48 p.m. UTC, Joshua Colp 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.</div>
<div>By Joshua Colp.</div>


<p style="color: grey;"><i>Updated May 5, 2014, 6:48 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-23497">ASTERISK-23497</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;">Framehooks currently provide no mechanism for anything to determine what frame types they are consuming. This is problematic for logic which uses this information to determine what to do (such as native bridging). This means that code has had to block certain things (such as RTP native bridging) if *any* framehooks are present - even if they are not interested in the media at all. The attached change adds some functionality to improve this:

1. An optional callback has been added to the framehook interface which allows the framehook implementation to be queried for whether it is consuming a frame type or not. If this callback is not implemented it is assumed they are consuming all types, which is the previous behavior.
2. Some framehooks have had the callback implemented.
3. The unbridge softhangup flag is now being set when a framehook is attached or detached to trigger a re-evaluation within the bridge universe.

These together allow the bridge_native_rtp module to be smarter about when to prevent its use.</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;">Performed numerous attended transfers across SIP and PJSIP. Before patch simple_bridge would be used after completion for attended. After patch the expected native_rtp would be used.</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/12/main/framehook.c <span style="color: grey">(413303)</span></li>

 <li>/branches/12/main/channel.c <span style="color: grey">(413303)</span></li>

 <li>/branches/12/main/bridge_basic.c <span style="color: grey">(413303)</span></li>

 <li>/branches/12/include/asterisk/framehook.h <span style="color: grey">(413303)</span></li>

 <li>/branches/12/bridges/bridge_native_rtp.c <span style="color: grey">(413303)</span></li>

</ul>

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







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








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