diff options
author | Mark Spencer <markster@digium.com> | 2005-10-14 17:02:20 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2005-10-14 17:02:20 +0000 |
commit | 141d9f7156c165e05ad9ec03e22ba2866bf6e3ce (patch) | |
tree | 8676e4a61c82c8a223d1c42fcd7066b173f3a1b3 /channel.c | |
parent | 9b69c79a36e56c89c46617aef6eb57bc4b97255e (diff) |
Make sure when the timeout occurs that we actually break the bridge (bug #5252)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6791 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channel.c')
-rwxr-xr-x | channel.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -2974,12 +2974,16 @@ static enum ast_bridge_result ast_generic_bridge(struct ast_channel *c0, struct } who = ast_waitfor_n(cs, 2, &toms); if (!who) { + if (!toms) { + res = AST_BRIDGE_RETRY; + break; + } ast_log(LOG_DEBUG, "Nobody there, continuing...\n"); if (c0->_softhangup == AST_SOFTHANGUP_UNBRIDGE || c1->_softhangup == AST_SOFTHANGUP_UNBRIDGE) { if (c0->_softhangup == AST_SOFTHANGUP_UNBRIDGE) - c0->_softhangup = 0; - if (c1->_softhangup == AST_SOFTHANGUP_UNBRIDGE) - c1->_softhangup = 0; + c0->_softhangup = 0; + if (c1->_softhangup == AST_SOFTHANGUP_UNBRIDGE) + c1->_softhangup = 0; c0->_bridge = c1; c1->_bridge = c0; } @@ -3215,7 +3219,8 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha ast_clear_flag(c0, AST_FLAG_NBRIDGE); ast_clear_flag(c1, AST_FLAG_NBRIDGE); } - + if (res == AST_BRIDGE_RETRY) + continue; switch (res) { case AST_BRIDGE_RETRY: /* continue; */ |