]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_sip: Allow call pickup to set the hangup cause. 40/1140/1
authorJoshua Colp <jcolp@digium.com>
Wed, 26 Aug 2015 10:40:32 +0000 (07:40 -0300)
committerJoshua Colp <jcolp@digium.com>
Wed, 26 Aug 2015 10:47:24 +0000 (07:47 -0300)
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

channels/chan_sip.c

index cd2ba17ea3c01074cd1f955e5d7b9c6547b1c04a..e03ed113e82c00a2a07f19f6ff0c26bcdc49314e 100644 (file)
@@ -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);