res_pjsip_sdp_rtp.c: Use correct timeout when put on hold.

When a call is put on hold and it has moh_passthrough and rtp_timeout
set on the endpoint, the wrong timeout will be used. rtp_timeout_hold is
expected to be used, but rtp_timeout is used instead. This change adds a
couple of checks for locally_held to determine if rtp_timeout_hold needs
to be used instead of rtp_timeout.

ASTERISK-30350

Change-Id: I7b106fc244332014216d12bba851cefe884cc25f
This commit is contained in:
Ben Ford 2022-12-12 12:42:17 -06:00 committed by George Joseph
parent 4168fa3466
commit 1adefb886a
1 changed files with 2 additions and 2 deletions

View File

@ -2240,9 +2240,9 @@ static int apply_negotiated_sdp_stream(struct ast_sip_session *session,
* instance itself.
*/
ast_rtp_instance_set_timeout(session_media->rtp, 0);
if (session->endpoint->media.rtp.timeout && !session_media->remotely_held) {
if (session->endpoint->media.rtp.timeout && !session_media->remotely_held && !session_media->locally_held) {
ast_rtp_instance_set_timeout(session_media->rtp, session->endpoint->media.rtp.timeout);
} else if (session->endpoint->media.rtp.timeout_hold && session_media->remotely_held) {
} else if (session->endpoint->media.rtp.timeout_hold && (session_media->remotely_held || session_media->locally_held)) {
ast_rtp_instance_set_timeout(session_media->rtp, session->endpoint->media.rtp.timeout_hold);
}