]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Only change the original or clone channel if it's the channel behind the proxy channe...
authorJoshua Colp <jcolp@digium.com>
Thu, 22 Feb 2007 18:44:24 +0000 (18:44 +0000)
committerJoshua Colp <jcolp@digium.com>
Thu, 22 Feb 2007 18:44:24 +0000 (18:44 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@56230 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channel.c
channels/chan_sip.c

index 577d0c799d6a426bde3013783ddea351ae09f3bb..82758b3d47ca8dbb76d0d00129ba2b9e68590aa3 100644 (file)
--- a/channel.c
+++ b/channel.c
@@ -2807,10 +2807,10 @@ int ast_channel_masquerade(struct ast_channel *original, struct ast_channel *clo
 
        /* each of these channels may be sitting behind a channel proxy (i.e. chan_agent)
           and if so, we don't really want to masquerade it, but its proxy */
-       if (original->_bridge && (original->_bridge != ast_bridged_channel(original)))
+       if (original->_bridge && (original->_bridge != ast_bridged_channel(original)) && (original->_bridge->_bridge != original))
                final_orig = original->_bridge;
 
-       if (clone->_bridge && (clone->_bridge != ast_bridged_channel(clone)))
+       if (clone->_bridge && (clone->_bridge != ast_bridged_channel(clone)) && (clone->_bridge->_bridge != clone))
                final_clone = clone->_bridge;
 
        if ((final_orig != original) || (final_clone != clone)) {
index 594f5e6a9b0bb92d7022d8d39f279cfc7f8befc2..2ce4d2574d5fcf8d0ffd91c468963b423a32a5e0 100644 (file)
@@ -10458,7 +10458,7 @@ static int attempt_transfer(struct sip_pvt *p1, struct sip_pvt *p2)
        bridgea = ast_bridged_channel(chana);
        bridgeb = ast_bridged_channel(chanb);
        
-       if (bridgea && (bridgea == chana->_bridge)) {
+       if (bridgea) {
                peera = chana;
                peerb = chanb;
                peerc = bridgea;