aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_local.c
diff options
context:
space:
mode:
authorjpeeler <jpeeler@f38db490-d61c-443f-a65b-d21fe96a405b>2010-08-09 23:04:59 +0000
committerjpeeler <jpeeler@f38db490-d61c-443f-a65b-d21fe96a405b>2010-08-09 23:04:59 +0000
commita665e2a7add2bfef98f779b346db3b54ed7377ba (patch)
tree1a86118a0a9795251f1a827b5f9e79718ef5d1e4 /channels/chan_local.c
parent476a598eef70fb0d39bd78875bfee7a7932e4b83 (diff)
Merged revisions 281466 via svnmerge from
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: http://svn.digium.com/svn/asterisk/trunk@281467 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_local.c')
-rw-r--r--channels/chan_local.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/channels/chan_local.c b/channels/chan_local.c
index 720423c25..aebca441a 100644
--- a/channels/chan_local.c
+++ b/channels/chan_local.c
@@ -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);