]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 306672 via svnmerge from
authorTerry Wilson <twilson@digium.com>
Mon, 7 Feb 2011 22:40:20 +0000 (22:40 +0000)
committerTerry Wilson <twilson@digium.com>
Mon, 7 Feb 2011 22:40:20 +0000 (22:40 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@306673 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/features.c

index 10a4bdf5d6040a9e7cf0d4d10ee0b99ee7415a38..f89d5fc5d294ae58a9dc14712574961aea6d972c 100644 (file)
@@ -4882,7 +4882,8 @@ static int find_channel_by_group(struct ast_channel *c, void *data) {
                   change while we're here, but that isn't a problem. */
                (c != chan) &&
                (chan->pickupgroup & c->callgroup) &&
-               ((c->_state == AST_STATE_RINGING) || (c->_state == AST_STATE_RING));
+               ((c->_state == AST_STATE_RINGING) || (c->_state == AST_STATE_RING)) &&
+               !c->masq;
 }
 
 /*!