[Asterisk-cvs] asterisk/apps app_voicemail.c,1.102,1.103

markster at lists.digium.com markster at lists.digium.com
Thu May 27 18:21:00 CDT 2004


Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv4787/apps

Modified Files:
	app_voicemail.c 
Log Message:
Merge connor's exit context patch (#1737)


Index: app_voicemail.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_voicemail.c,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -d -r1.102 -r1.103
--- app_voicemail.c	27 May 2004 00:07:18 -0000	1.102
+++ app_voicemail.c	27 May 2004 22:35:47 -0000	1.103
@@ -110,6 +110,7 @@
 	char zonetag[80];
 	char callback[80];
 	char dialout[80];
+	char exit[80];
 	int attach;
 	int alloced;
 	int saycid;
@@ -231,6 +232,7 @@
 static int hearenv;
 static char dialcontext[80];
 static char callcontext[80];
+static char exitcontext[80];
 
 static char cidinternalcontexts[MAX_NUM_CID_CONTEXTS][64];
 
@@ -262,6 +264,8 @@
 		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)
@@ -307,6 +311,8 @@
 				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);
 
 			}
 		}
@@ -1583,8 +1589,11 @@
 		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;
@@ -1593,8 +1602,11 @@
 		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;
@@ -3600,6 +3612,7 @@
 	char *s,*q,*stringp;
 	char *dialoutcxt = NULL;
 	char *callbackcxt = NULL;	
+	char *exitcxt = NULL;	
 	
 	int x;
 
@@ -3764,6 +3777,14 @@
 		} 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");




More information about the svn-commits mailing list