diff options
author | twilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2011-02-07 22:43:22 +0000 |
---|---|---|
committer | twilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2011-02-07 22:43:22 +0000 |
commit | b107853e66207f51e2be03680cc12a6b60a8d9ce (patch) | |
tree | e98e1de22521828913e126495f0b0945f3783bc5 | |
parent | af25cea2b0d6f4e6661a29e6e1c59c1779b27649 (diff) |
Merged revisions 306673 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r306673 | twilson | 2011-02-07 14:40:20 -0800 (Mon, 07 Feb 2011) | 17 lines
Merged revisions 306672 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r306672 | twilson | 2011-02-07 14:35:20 -0800 (Mon, 07 Feb 2011) | 10 lines
Don't try to pickup a call in the middle of a masquerade
If A calls B which doesn't answer and C & D both try to do a call pickup, it is
possible for ast_pickup_call to answer the call, then fail to masquerade one of
the calls because the other one is already in the process of masquerading. This
patch checks to see if the channel is in the process of masquerading before
call before selecting it for a pickup.
Review: https://reviewboard.asterisk.org/r/1094/
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@306674 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | main/features.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/main/features.c b/main/features.c index 8df3bf199..f8d167afc 100644 --- a/main/features.c +++ b/main/features.c @@ -5570,7 +5570,8 @@ static int find_channel_by_group(void *obj, void *arg, void *data, int flags) change while we're here, but that isn't a problem. */ (c != chan) && (chan->pickupgroup & c->callgroup) && - ((chan->_state == AST_STATE_RINGING) || (chan->_state == AST_STATE_RING)); + ((chan->_state == AST_STATE_RINGING) || (chan->_state == AST_STATE_RING)) && + !c->masq; return i ? CMP_MATCH | CMP_STOP : 0; } |