res_pjsip_sdp_rtp: Improve detecting of lack of RTP activity

Change RTP timer behavior for detecting RTP only after two-way
SDP channel establishment. Ignore detecting after receiving 183
with SDP or while direct media is used.
Make rtp_timeout and rtp_timeout_hold options consistent to rtptimeout
and rtpholdtimeout options in chan_sip.

ASTERISK-26689 #close
ASTERISK-29929 #close

Change-Id: I07326d5b9c40f25db717fd6075f6f3a8d77279eb
This commit is contained in:
Boris P. Korzun
2022-02-22 23:51:02 +03:00
committed by Friendly Automation
parent bf9dafa7c2
commit 5565d86fa6
2 changed files with 23 additions and 35 deletions

View File

@@ -334,14 +334,6 @@ static int check_for_rtp_changes(struct ast_channel *chan, struct ast_rtp_instan
ast_sockaddr_setnull(&media->direct_media_addr);
changed = 1;
if (media->rtp) {
/* Direct media has ended - reset time of last received RTP packet
* to avoid premature RTP timeout. Synchronisation between the
* modification of direct_mdedia_addr+last_rx here and reading the
* values in res_pjsip_sdp_rtp.c:rtp_check_timeout() is provided
* by the channel's lock (which is held while this function is
* executed).
*/
ast_rtp_instance_set_last_rx(media->rtp, time(NULL));
ast_rtp_instance_set_prop(media->rtp, AST_RTP_PROPERTY_RTCP, 1);
if (position != -1) {
ast_channel_set_fd(chan, position + AST_EXTENDED_FDS, ast_rtp_instance_fd(media->rtp, 1));