]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
SIP promiscuous redirect could fail to dial the redirect.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 23 Jul 2010 21:56:44 +0000 (21:56 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 23 Jul 2010 21:56:44 +0000 (21:56 +0000)
The ast_channel was created with one variable to ast_request() but the
call to ast_call() that initiates the outgoing call was using a different
variable.  The two variables are not equivalent if the call_forward string
included a channel technology specifier.  e.g., SIP/200

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

apps/app_dial.c
apps/app_queue.c

index d1a2bf49cdb6d2cadb0c31c174f83b15691934c2..3a942ffc2129fef96f239682e2d7259ef0bbac91 100644 (file)
@@ -534,7 +534,9 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct dial_l
                                                ast_channel_inherit_variables(in, o->chan);
                                                ast_channel_datastore_inherit(in, o->chan);
                                        } else
-                                               ast_log(LOG_NOTICE, "Unable to create local channel for call forward to '%s/%s' (cause = %d)\n", tech, stuff, cause);
+                                               ast_log(LOG_NOTICE,
+                                                       "Forwarding failed to create channel to dial '%s/%s' (cause = %d)\n",
+                                                       tech, stuff, cause);
                                }
                                if (!c) {
                                        ast_clear_flag(o, DIAL_STILLGOING);     
@@ -569,8 +571,9 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct dial_l
                                        if (c->cid.cid_rdnis) 
                                                free(c->cid.cid_rdnis);
                                        c->cid.cid_rdnis = ast_strdup(S_OR(in->macroexten, in->exten));
-                                       if (ast_call(c, tmpchan, 0)) {
-                                               ast_log(LOG_NOTICE, "Failed to dial on local channel for call forward to '%s'\n", tmpchan);
+                                       if (ast_call(c, stuff, 0)) {
+                                               ast_log(LOG_NOTICE, "Forwarding failed to dial '%s/%s'\n",
+                                                       tech, stuff);
                                                ast_clear_flag(o, DIAL_STILLGOING);     
                                                ast_hangup(c);
                                                c = o->chan = NULL;
index 88d120222f6dbbd52743ff251df52434893c4475..b0eb0217bef0730f661e8d640e02e009d26fbba6 100644 (file)
@@ -2321,7 +2321,9 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
                                        /* Setup parameters */
                                        o->chan = ast_request(tech, in->nativeformats, stuff, &status);
                                        if (!o->chan) {
-                                               ast_log(LOG_NOTICE, "Unable to create local channel for call forward to '%s/%s'\n", tech, stuff);
+                                               ast_log(LOG_NOTICE,
+                                                       "Forwarding failed to create channel to dial '%s/%s'\n",
+                                                       tech, stuff);
                                                o->stillgoing = 0;
                                                numnochan++;
                                        } else {
@@ -2346,8 +2348,9 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
                                                if (o->chan->cid.cid_rdnis)
                                                        free(o->chan->cid.cid_rdnis);
                                                o->chan->cid.cid_rdnis = ast_strdup(S_OR(in->macroexten, in->exten));
-                                               if (ast_call(o->chan, tmpchan, 0)) {
-                                                       ast_log(LOG_NOTICE, "Failed to dial on local channel for call forward to '%s'\n", tmpchan);
+                                               if (ast_call(o->chan, stuff, 0)) {
+                                                       ast_log(LOG_NOTICE, "Forwarding failed to dial '%s/%s'\n",
+                                                               tech, stuff);
                                                        do_hang(o);
                                                        numnochan++;
                                                }