From: Joshua Colp Date: Wed, 26 Aug 2015 10:40:32 +0000 (-0300) Subject: chan_sip: Allow call pickup to set the hangup cause. X-Git-Tag: 11.20.0-rc1~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59636e82b2140993081837b0719bf6ad0ec41c40;p=thirdparty%2Fasterisk.git chan_sip: Allow call pickup to set the hangup cause. The call pickup implementation in chan_sip currently sets the channel hangup cause to "normal clearing" if call pickup is successfully performed. This action overwrites the "answered elsewhere" hangup cause set by the call pickup code and can result in the SIP device in question showing a missed call when it should not. This change sets the hangup cause to "normal clearing" as a default initially but allows the call pickup to change it as needed. ASTERISK-25346 #close Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index cd2ba17ea3..e03ed113e8 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -24499,10 +24499,9 @@ static void *sip_pickup_thread(void *stuff) struct ast_channel *chan; chan = stuff; + ast_channel_hangupcause_set(chan, AST_CAUSE_NORMAL_CLEARING); if (ast_pickup_call(chan)) { ast_channel_hangupcause_set(chan, AST_CAUSE_CALL_REJECTED); - } else { - ast_channel_hangupcause_set(chan, AST_CAUSE_NORMAL_CLEARING); } ast_hangup(chan); ast_channel_unref(chan);