diff options
author | Kinsey Moore <kmoore@digium.com> | 2013-08-21 14:08:23 +0000 |
---|---|---|
committer | Kinsey Moore <kmoore@digium.com> | 2013-08-21 14:08:23 +0000 |
commit | d12350ccc33a3245a8f26f3346a9fda721d98a85 (patch) | |
tree | 04b21d4db48ca6d849c9e7af2c97a37a0c9c26c2 | |
parent | e85dd769452ad7d27e22bd14405e93f9de27dd7a (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.c | 5 |
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); |