diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-12-03 17:55:12 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-12-03 17:55:12 +0000 |
commit | 025e86166edb8fdf2e2c80e38062c619d686a9f9 (patch) | |
tree | 9e0e4af74af2f6696338607c4c965e69335fd31b /channels | |
parent | d790ede395881201d8f3d55975c24e9acde8c2f6 (diff) |
During bridge code, the channel bridge may return a retry code, if a transfer
was initiated but not yet completed. If the bridge is immediately retried,
then we may send a storm of TXREQ packets, even though the first set is sent
reliably (retransmitted). Fixes AST-137.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@160570 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_iax2.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 820a127f9..3ce3e67f3 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -3614,6 +3614,10 @@ static enum ast_bridge_result iax2_bridge(struct ast_channel *c0, struct ast_cha iaxs[callno0]->bridgecallno = callno1; iaxs[callno1]->bridgecallno = callno0; } + /* If the bridge got retried, don't queue up more packets - the transfer request will be retransmitted as necessary */ + if (iaxs[callno0]->transferring && iaxs[callno1]->transferring) { + transferstarted = 1; + } unlock_both(callno0, callno1); /* If not, try to bridge until we can execute a transfer, if we can */ |