char zonetag[80];
char callback[80];
char dialout[80];
+ char exit[80];
int attach;
int alloced;
int saycid;
static int hearenv;
static char dialcontext[80];
static char callcontext[80];
+static char exitcontext[80];
static char cidinternalcontexts[MAX_NUM_CID_CONTEXTS][64];
strncpy(vmu->callback, callcontext, sizeof(vmu->callback) -1);
if (dialcontext)
strncpy(vmu->dialout, dialcontext, sizeof(vmu->dialout) -1);
+ if (exitcontext)
+ strncpy(vmu->exit, exitcontext, sizeof(vmu->exit) -1);
}
static void apply_options(struct ast_vm_user *vmu, char *options)
strncpy(vmu->callback, value, sizeof(vmu->callback) -1);
} else if (!strcasecmp(var, "dialout")) {
strncpy(vmu->dialout, value, sizeof(vmu->dialout) -1);
+ } else if (!strcasecmp(var, "exitcontext")) {
+ strncpy(vmu->exit, value, sizeof(vmu->exit) -1);
}
}
other than the operator -- an automated attendant or mailbox login for example */
if (res == '*') {
strncpy(chan->exten, "a", sizeof(chan->exten) - 1);
- if (strlen(chan->macrocontext))
+ if (strlen(vmu->exit)) {
+ strncpy(chan->context, vmu->exit, sizeof(chan->context) - 1);
+ } else if (strlen(chan->macrocontext)) {
strncpy(chan->context, chan->macrocontext, sizeof(chan->context) - 1);
+ }
chan->priority = 0;
free_user(vmu);
return 0;
if (res == '0') {
transfer:
strncpy(chan->exten, "o", sizeof(chan->exten) - 1);
- if (strlen(chan->macrocontext))
+ if (strlen(vmu->exit)) {
+ strncpy(chan->context, vmu->exit, sizeof(chan->context) - 1);
+ } else if (strlen(chan->macrocontext)) {
strncpy(chan->context, chan->macrocontext, sizeof(chan->context) - 1);
+ }
chan->priority = 0;
free_user(vmu);
return 0;
char *s,*q,*stringp;
char *dialoutcxt = NULL;
char *callbackcxt = NULL;
+ char *exitcxt = NULL;
int x;
} else {
callcontext[0] = '\0';
}
+
+ if ((exitcxt = ast_variable_retrieve(cfg, "general", "exitcontext"))) {
+ strncpy(exitcontext, exitcxt, sizeof(exitcontext) - 1);
+ ast_log(LOG_DEBUG, "found operator context: %s\n", exitcontext);
+ } else {
+ exitcontext[0] = '\0';
+ }
+
#ifdef USEMYSQLVM
if (!(s=ast_variable_retrieve(cfg, "general", "dbuser"))) {
strcpy(dbuser, "test");