]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 281466 via svnmerge from
authorJeff Peeler <jpeeler@digium.com>
Mon, 9 Aug 2010 23:04:59 +0000 (23:04 +0000)
committerJeff Peeler <jpeeler@digium.com>
Mon, 9 Aug 2010 23:04:59 +0000 (23:04 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r281466 | jpeeler | 2010-08-09 18:04:02 -0500 (Mon, 09 Aug 2010) | 2 lines

  Add some more stuff to copy from 281429.
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@281467 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_local.c

index 720423c25e6cf31fb9cb9ee689d83572fc2fc7a0..aebca441aeafadb309341d1dd41766b2dea704f1 100644 (file)
@@ -417,14 +417,29 @@ static void check_bridge(struct local_pvt *p)
                                                 * thread (which is the to be masqueraded away local channel) before both local
                                                 * channels are optimized away.
                                                 */
-                                               if (p->owner->caller.id.name.valid || p->owner->caller.id.number.valid ||
-                                                       p->owner->caller.id.subaddress.valid) {
-
+                                               if (p->owner->caller.id.name.valid || p->owner->caller.id.number.valid
+                                                       || p->owner->caller.id.subaddress.valid || p->owner->caller.ani.name.valid
+                                                       || p->owner->caller.ani.number.valid || p->owner->caller.ani.subaddress.valid) {
                                                        struct ast_party_caller tmp;
                                                        tmp = p->owner->caller;
                                                        p->owner->caller = p->chan->_bridge->caller;
                                                        p->chan->_bridge->caller = tmp;
                                                }
+                                               if (p->owner->redirecting.from.name.valid || p->owner->redirecting.from.number.valid
+                                                       || p->owner->redirecting.from.subaddress.valid || p->owner->redirecting.to.name.valid
+                                                       || p->owner->redirecting.to.number.valid || p->owner->redirecting.to.subaddress.valid) {
+                                                       struct ast_party_redirecting tmp;
+                                                       tmp = p->owner->redirecting;
+                                                       p->owner->redirecting = p->chan->_bridge->redirecting;
+                                                       p->chan->_bridge->redirecting = tmp;
+                                               }
+                                               if (p->owner->dialed.number.str || p->owner->dialed.subaddress.valid) {
+                                                       struct ast_party_dialed tmp;
+                                                       tmp = p->owner->dialed;
+                                                       p->owner->dialed = p->chan->_bridge->dialed;
+                                                       p->chan->_bridge->dialed = tmp;
+                                               }
+
 
                                                ast_app_group_update(p->chan, p->owner);
                                                ast_channel_masquerade(p->owner, p->chan->_bridge);