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
* 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);
}