Inherit the context and extension until the channel is answered
authorJoshua Colp <jcolp@digium.com>
Fri, 13 Oct 2006 21:20:18 +0000 (21:20 +0000)
committerJoshua Colp <jcolp@digium.com>
Fri, 13 Oct 2006 21:20:18 +0000 (21:20 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45109 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_dial.c

index 27eb2b0..95bbc4d 100644 (file)
@@ -455,6 +455,8 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct dial_l
                                                       OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
                                                       OPT_CALLEE_PARK | OPT_CALLER_PARK |
                                                       DIAL_NOFORWARDHTML);
                                                       OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
                                                       OPT_CALLEE_PARK | OPT_CALLER_PARK |
                                                       DIAL_NOFORWARDHTML);
+                                       ast_copy_string(c->context, "", sizeof(c->context));
+                                       ast_copy_string(c->exten, "", sizeof(c->exten));
                                }
                                continue;
                        }
                                }
                                continue;
                        }
@@ -574,6 +576,8 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct dial_l
                                                               OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
                                                               OPT_CALLEE_PARK | OPT_CALLER_PARK |
                                                               DIAL_NOFORWARDHTML);
                                                               OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
                                                               OPT_CALLEE_PARK | OPT_CALLER_PARK |
                                                               DIAL_NOFORWARDHTML);
+                                               ast_copy_string(c->context, "", sizeof(c->context));
+                                               ast_copy_string(c->exten, "", sizeof(c->exten));
                                                /* Setup early bridge if appropriate */
                                                ast_channel_early_bridge(in, peer);
                                        }
                                                /* Setup early bridge if appropriate */
                                                ast_channel_early_bridge(in, peer);
                                        }
@@ -1169,6 +1173,10 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                if (outbound_group)
                        ast_app_group_set_channel(tmp->chan, outbound_group);
 
                if (outbound_group)
                        ast_app_group_set_channel(tmp->chan, outbound_group);
 
+               /* Inherit context and extension */
+               ast_copy_string(tmp->chan->context, chan->context, sizeof(tmp->chan->context));
+               ast_copy_string(tmp->chan->exten, chan->exten, sizeof(tmp->chan->exten));
+
                /* Place the call, but don't wait on the answer */
                res = ast_call(tmp->chan, numsubst, 0);
 
                /* Place the call, but don't wait on the answer */
                res = ast_call(tmp->chan, numsubst, 0);