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




<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.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By rmudgett.</div>








<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-22043">ASTERISK-22043</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;">DTMF start/end and hold/unhold events have state because a DTMF begin event and hold event must be ended by something.

The following cases need to be handled when a channel is moved around in the system.
* When a channel leaves a bridge it may owe a DTMF end event to the bridge.
* When a channel leaves a bridge it may owe an UNHOLD event to the bridge.  (This case is explicitly ignored because things like transfers need explicit control over this.)
* When a channel leaves the bridging system it may need to simulate a DTMF end event to the channel.
* When a channel leaves the bridging system it may need to simulate an UNHOLD event to the channel.

The patch also fixes the following:
* Fixes playing a file and restarting MOH using the latest MOH class used.</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;">* Initiated a call, started a DTMF digit, and kicked the channel that started the digit out of the bridge.  The kicked channel put a DTMF end event into the bridge and the peer also ended the DTMF digit since it left the bridge at the same time.

* Initiated a call, put the call on hold, and kicked the channel that started the hold out of the bridge.  The peer channel did an unhold event when it left the bridge.

* Initiated a call with the L dial option announcing time intervals.  Put the call on hold.  The channel listening to hold MOH had the MOH interrupted while the announcements were played.  The MOH resumed when the announcement finished.  The difference with this patch is that the same MOH class was resumed and not the default MOH.</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>/trunk/bridges/bridge_builtin_interval_features.c <span style="color: grey">(397503)</span></li>

 <li>/trunk/include/asterisk/bridge_channel.h <span style="color: grey">(397503)</span></li>

 <li>/trunk/include/asterisk/bridge_channel_internal.h <span style="color: grey">(397503)</span></li>

 <li>/trunk/include/asterisk/channel.h <span style="color: grey">(397503)</span></li>

 <li>/trunk/main/bridge.c <span style="color: grey">(397503)</span></li>

 <li>/trunk/main/bridge_channel.c <span style="color: grey">(397503)</span></li>

 <li>/trunk/main/channel.c <span style="color: grey">(397503)</span></li>

 <li>/trunk/main/channel_internal_api.c <span style="color: grey">(397503)</span></li>

 <li>/trunk/res/res_musiconhold.c <span style="color: grey">(397503)</span></li>

</ul>

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







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




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