Allow AgentCallbackLogin to specify new location (bug #46)
authorMark Spencer <markster@digium.com>
Thu, 14 Aug 2003 21:27:24 +0000 (21:27 +0000)
committerMark Spencer <markster@digium.com>
Thu, 14 Aug 2003 21:27:24 +0000 (21:27 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1334 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_agent.c

index 6a04aa5..ff0fa06 100755 (executable)
@@ -915,6 +915,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
        char *opt_user = NULL;
        char *options = NULL;
        char *context = NULL;
+       char *exten = NULL;
        int play_announcement;
        char *filename = "agent-loginok";
        
@@ -934,6 +935,10 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
                                        *context = '\0';
                                        context++;
                                }
+                               exten = options;
+                               while(*exten && ((*exten < '0') || (*exten > '9'))) exten++;
+                               if (!*exten)
+                                       exten = NULL;
                        }
                }
        }
@@ -979,7 +984,11 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
                                                if (callbackmode) {
                                                        char tmpchan[256] = "";
                                                        /* Retrieve login chan */
-                                                       res = ast_app_getdata(chan, "agent-newlocation", tmpchan, sizeof(tmpchan) - 1, 0);
+                                                       if (exten) {
+                                                               strncpy(tmpchan, exten, sizeof(tmpchan) - 1);
+                                                               res = 0;
+                                                       } else
+                                                               res = ast_app_getdata(chan, "agent-newlocation", tmpchan, sizeof(tmpchan) - 1, 0);
                                                        if (!res) {
                                                                if (context && strlen(context) && strlen(tmpchan))
                                                                        snprintf(p->loginchan, sizeof(p->loginchan), "%s@%s", tmpchan, context);