From: Kinsey Moore Date: Wed, 6 Jun 2012 16:09:10 +0000 (+0000) Subject: Ensure overlapping hold flags do not conflict X-Git-Tag: 10.6.0-rc1~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa86ac77ca9ab1f8bd79ccf90a3749e0e9612a54;p=thirdparty%2Fasterisk.git 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 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@368587 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index b83f4495dd..e40456a400 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -8854,6 +8854,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 */