From 1492177b7b7376976d8a979ed92917a7ca8da47e Mon Sep 17 00:00:00 2001 From: Kinsey Moore Date: Wed, 6 Jun 2012 16:11:01 +0000 Subject: [PATCH] Ensure overlapping hold flags do not conflict When changing between different modes of hold, the flags were not being cleared out properly causing a failure to change hold states. (closes issue ASTERISK-19919) Patch-by: Morten Tryfoss Reported-by: Morten Tryfoss ........ Merged revisions 368586 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 368587 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368588 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 31064fe6aa..5b1d252be1 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -9037,6 +9037,9 @@ static void change_hold_state(struct sip_pvt *dialog, struct sip_request *req, i } /* No address for RTP, we're on hold */ + /* Ensure hold flags are cleared so that overlapping flags do not conflict */ + ast_clear_flag(&dialog->flags[1], SIP_PAGE2_CALL_ONHOLD); + if (sendonly == 1) /* One directional hold (sendonly/recvonly) */ ast_set_flag(&dialog->flags[1], SIP_PAGE2_CALL_ONHOLD_ONEDIR); else if (sendonly == 2) /* Inactive stream */