[Asterisk-cvs] asterisk/apps app_dial.c,1.115,1.116

markster at lists.digium.com markster at lists.digium.com
Wed Dec 29 20:22:21 CST 2004


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

Modified Files:
	app_dial.c 
Log Message:
Allow moh class to be specified (bug #3199)


Index: app_dial.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_dial.c,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -d -r1.115 -r1.116
--- app_dial.c	28 Dec 2004 23:18:31 -0000	1.115
+++ app_dial.c	30 Dec 2004 01:17:07 -0000	1.116
@@ -67,7 +67,8 @@
 "             don't allow callerids from other extensions then the ones\n"
 "             that are assigned to you.\n"
 "      'r' -- indicate ringing to the calling party, pass no audio until answered.\n"
-"      'm' -- provide hold music to the calling party until answered.\n"
+"      'm[(class)]' -- provide hold music to the calling party until answered (optionally\n"
+"                      with the specified class.\n"
 "      'M(x[^arg]) -- Executes the macro (x with ^ delim arg list) upon connect of the call.\n"
 "                     Also, the macro can set the MACRO_RESULT variable to do the following:\n"
 "                     -- ABORT - Hangup both legs of the call.\n"
@@ -514,6 +515,7 @@
 	int play_to_caller=0,play_to_callee=0;
 	int playargs=0, sentringing=0, moh=0;
 	char *varname;
+	char *mohclass = NULL;
 	int vartype;
 	char *outbound_group = NULL;
 	char *macro_result = NULL, *macro_transfer_dest = NULL;
@@ -703,6 +705,26 @@
 				hasmacro = 0;
 			}
 		}
+		/* Get music on hold class */
+		if ((mac = strstr(transfer, "m("))) {
+			mohclass = ast_strdupa(mac + 2);
+			mac++; /* Leave the "m" in the string */
+			while (*mac && (*mac != ')'))
+				*(mac++) = 'X';
+			if (*mac)
+				*mac = 'X';
+			else {
+				ast_log(LOG_WARNING, "Could not find music on hold class to use, assuming default.\n");
+				mohclass=NULL;
+			}
+			mac = strchr(macroname, ')');
+			if (mac)
+				*mac = '\0';
+			else {
+				ast_log(LOG_WARNING, "Music on hold class specified without trailing ')'\n");
+				mohclass = NULL;
+			}
+		}
 		/* Extract privacy info from transfer */
 		if ((s = strstr(transfer, "P("))) {
 			privacy = 1;
@@ -970,7 +992,7 @@
 		strncpy(status, "NOANSWER", sizeof(status) - 1);
 		if (outgoing->musiconhold) {
 			moh=1;
-			ast_moh_start(chan, NULL);
+			ast_moh_start(chan, mohclass);
 		} else if (outgoing->ringbackonly) {
 			ast_indicate(chan, AST_CONTROL_RINGING);
 			sentringing++;




More information about the svn-commits mailing list