RTP: reset DTMF last seqno/timestamp on RTP renegotiation
The remote side may start a new stream when renegotiating RTP. Need to reset the DTMF last sequence number and the timestamp of the last END packet on RTP renegotiation. If the new time stamp is lower then the timestamp of the last DTMF END packet the asterisk drops all DTMF frames as out of order. This bug was caught using Cisco ip-phone SPA5XX and codec g722. On SIP session update the SPA50X resets stream and a new timestamp is twice smaller then the previous. ASTERISK-28162 #close Change-Id: Ic72b4497e74d801b27a635559c1cf29c16c95254
This commit is contained in:
parent
701cd2ee58
commit
c0e57e458b
|
@ -7369,6 +7369,10 @@ static void ast_rtp_remote_address_set(struct ast_rtp_instance *instance, struct
|
|||
ast_rtp_instance_set_remote_address(mapping->instance, addr);
|
||||
}
|
||||
|
||||
/* Need to reset the DTMF last sequence number and the timestamp of the last END packet */
|
||||
rtp->last_seqno = 0;
|
||||
rtp->last_end_timestamp = 0;
|
||||
|
||||
if (strictrtp && rtp->strict_rtp_state != STRICT_RTP_OPEN
|
||||
&& !ast_sockaddr_isnull(addr) && ast_sockaddr_cmp(addr, &rtp->strict_rtp_address)) {
|
||||
/* We only need to learn a new strict source address if we've been told the source is
|
||||
|
|
Loading…
Reference in New Issue