aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortwilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b>2011-02-07 22:46:07 +0000
committertwilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b>2011-02-07 22:46:07 +0000
commit437ff426b05a9664fb37e044fb7fc5e9a732ddce (patch)
tree633ffed96be430599e310e618c2ccebf4fb09034
parent994c837c0516d87d00c72856b3dbf7ffe8b4b44b (diff)
Merged revisions 306674 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r306674 | twilson | 2011-02-07 14:43:22 -0800 (Mon, 07 Feb 2011) | 24 lines 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/trunk@306675 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--main/features.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/main/features.c b/main/features.c
index 23e8d57a8..7b856e132 100644
--- a/main/features.c
+++ b/main/features.c
@@ -5586,7 +5586,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;
}