Fix helper app
authorMark Spencer <markster@digium.com>
Thu, 9 Oct 2003 14:12:26 +0000 (14:12 +0000)
committerMark Spencer <markster@digium.com>
Thu, 9 Oct 2003 14:12:26 +0000 (14:12 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1622 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channel.c

index 094a8a3..e6a5437 100755 (executable)
--- a/channel.c
+++ b/channel.c
@@ -1509,15 +1509,10 @@ struct ast_channel *__ast_request_and_dial(char *type, int format, void *data, i
                        while( (var = strtok_r(NULL, "|", &tmp)) ) {
                                pbx_builtin_setvar( chan, var );
                        } /* /JDG */
-                       if (oh->context && *oh->context)
-                               strncpy(chan->context, oh->context, sizeof(chan->context) - 1);
-                       if (oh->exten && *oh->exten)
-                               strncpy(chan->exten, oh->exten, sizeof(chan->exten) - 1);
                        if (oh->callerid && *oh->callerid)
                                ast_set_callerid(chan, oh->callerid, 1);
                        if (oh->account && *oh->account)
                                ast_cdr_setaccount(chan, oh->account);
-                       chan->priority = oh->priority;
                }
                if (callerid && strlen(callerid))
                        ast_set_callerid(chan, callerid, 1);
@@ -1561,8 +1556,18 @@ struct ast_channel *__ast_request_and_dial(char *type, int format, void *data, i
                        ast_log(LOG_NOTICE, "Unable to request channel %s/%s\n", type, (char *)data);
        } else
                ast_log(LOG_NOTICE, "Unable to request channel %s/%s\n", type, (char *)data);
-       if (chan && (chan->_state == AST_STATE_UP))
-               state = AST_CONTROL_ANSWER;
+       if (chan) {
+               /* Final fixups */
+               if (oh) {
+                       if (oh->context && *oh->context)
+                               strncpy(chan->context, oh->context, sizeof(chan->context) - 1);
+                       if (oh->exten && *oh->exten)
+                               strncpy(chan->exten, oh->exten, sizeof(chan->exten) - 1);
+                       chan->priority = oh->priority;
+               }
+               if (chan->_state == AST_STATE_UP) 
+                       state = AST_CONTROL_ANSWER;
+       }
        if (outstate)
                *outstate = state;
        if (chan && res <= 0) {