summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2013-08-21 14:08:23 +0000
committerKinsey Moore <kmoore@digium.com>2013-08-21 14:08:23 +0000
commitd12350ccc33a3245a8f26f3346a9fda721d98a85 (patch)
tree04b21d4db48ca6d849c9e7af2c97a37a0c9c26c2
parente85dd769452ad7d27e22bd14405e93f9de27dd7a (diff)
Allow channels in app_stasis to hangup properly
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
-rw-r--r--res/res_stasis.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/res/res_stasis.c b/res/res_stasis.c
index 5d44d0ef9..4b4563af3 100644
--- a/res/res_stasis.c
+++ b/res/res_stasis.c
@@ -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);