<p>Alexei Gradinari has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/10850">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">RTP: reset DTMF last seqno/timestamp on RTP renegotiation<br><br>The remote side may start a new stream when renegotiating RTP.<br>Need to reset the DTMF last sequence number and the timestamp<br>of the last END packet on RTP renegotiation.<br><br>If the new time stamp is lower then the timestamp of the last DTMF END packet<br>the asterisk drops all DTMF frames as out of order.<br><br>This bug was caught using Cisco ip-phone SPA5XX and codec g722.<br>On SIP session update the SPA50X resets stream and a new timestamp is twice<br>smaller then the previous.<br><br>ASTERISK-28162 #close<br><br>Change-Id: Ic72b4497e74d801b27a635559c1cf29c16c95254<br>---<br>M res/res_rtp_asterisk.c<br>1 file changed, 4 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/50/10850/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c</span><br><span>index a13725a..9e603f2 100644</span><br><span>--- a/res/res_rtp_asterisk.c</span><br><span>+++ b/res/res_rtp_asterisk.c</span><br><span>@@ -7369,6 +7369,10 @@</span><br><span>           ast_rtp_instance_set_remote_address(mapping->instance, addr);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Need to reset the DTMF last sequence number and the timestamp of the last END packet */</span><br><span style="color: hsl(120, 100%, 40%);">+    rtp->last_seqno = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+       rtp->last_end_timestamp = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    if (strictrtp && rtp->strict_rtp_state != STRICT_RTP_OPEN</span><br><span>                 && !ast_sockaddr_isnull(addr) && ast_sockaddr_cmp(addr, &rtp->strict_rtp_address)) {</span><br><span>          /* We only need to learn a new strict source address if we've been told the source is</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/10850">change 10850</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/10850"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ic72b4497e74d801b27a635559c1cf29c16c95254 </div>
<div style="display:none"> Gerrit-Change-Number: 10850 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Alexei Gradinari <alex2grad@gmail.com> </div>