Allow channels in app_stasis to hangup properly
authorKinsey Moore <kmoore@digium.com>
Wed, 21 Aug 2013 14:08:23 +0000 (14:08 +0000)
committerKinsey Moore <kmoore@digium.com>
Wed, 21 Aug 2013 14:08:23 +0000 (14:08 +0000)
This detects hangups that occur while bridged to allow channels to exit
app_stasis even if the hangup frame was absorbed by the bridge the
channel was in.

Reported by: David Lee
(closes issue ASTERISK-22297)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397244 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_stasis.c

index 5d44d0e..4b4563a 100644 (file)
@@ -597,6 +597,11 @@ int stasis_app_exec(struct ast_channel *chan, const char *app_name, int argc,
                int r;
                int command_count;
 
+               /* Check to see if a bridge absorbed our hangup frame */
+               if (ast_check_hangup_locked(chan)) {
+                       break;
+               }
+
                if (stasis_app_get_bridge(control)) {
                        /* Bridge is handling channel frames */
                        control_wait(control);