[Asterisk-cvs] asterisk/res res_features.c,1.26,1.27

anthm at lists.digium.com anthm at lists.digium.com
Wed Jan 5 14:55:22 CST 2005


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

Modified Files:
	res_features.c 
Log Message:
allow sounds to be configurable

Index: res_features.c
===================================================================
RCS file: /usr/cvsroot/asterisk/res/res_features.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- res_features.c	5 Jan 2005 19:56:47 -0000	1.26
+++ res_features.c	5 Jan 2005 21:00:20 -0000	1.27
@@ -74,6 +74,11 @@
 /* Default courtesy tone played when party joins conference */
 static char courtesytone[256] = "";
 
+/* Default sounds */
+static char xfersound[256] = "beep";
+static char xferfailsound[256] = "beeperr";
+
+
 /* Registrar for operations */
 static char *registrar = "res_features";
 
@@ -491,7 +496,7 @@
 		if (option_verbose > 2)	
 			ast_verbose(VERBOSE_PREFIX_3 "Unable to find extension '%s' in context '%s'\n", newext, transferer_real_context);
 	}
-	res = ast_streamfile(transferer, "pbx-invalid", transferee->language);
+	res = ast_streamfile(transferer, xferfailsound, transferee->language);
 	if (res) {
 		ast_moh_stop(transferee);
 		ast_autoservice_stop(transferee);
@@ -578,9 +583,9 @@
 						ast_frfree(f);
 						f = NULL;
 					}
-					if (!ast_streamfile(transferer, "beep", transferer->language)) {
+					if (!ast_strlen_zero(xfersound) && !ast_streamfile(transferer, xfersound, transferer->language)) {
 						if (ast_waitstream(transferer, "") < 0) {
-							ast_log(LOG_WARNING, "Failed to play courtesy tone!\n");
+							ast_log(LOG_WARNING, "Failed to play %s\n", xfersound);
 						}
 					}
 					ast_moh_stop(transferee);
@@ -641,9 +646,9 @@
 					tobj->peer = newchan;
 					tobj->bconfig = *config;
 	
-					if (!ast_streamfile(newchan, "beep", newchan->language)) {
+					if (!ast_strlen_zero(xfersound) && !ast_streamfile(newchan, xfersound, newchan->language)) {
 						if (ast_waitstream(newchan, "") < 0) {
-							ast_log(LOG_WARNING, "Failed to play courtesy tone!\n");
+							ast_log(LOG_WARNING, "Failed to play %s!\n", xfersound);
 						}
 					}
 					ast_bridge_call_thread_launch(tobj);
@@ -658,9 +663,11 @@
 				ast_log(LOG_WARNING, "Unable to create channel Local/%s do you have chan_local?\n",dialstr);
 				ast_moh_stop(transferee);
 				ast_autoservice_stop(transferee);
-				res = ast_streamfile(transferer, "beeperr", transferer->language);
-				if (!res && (ast_waitstream(transferer, "") < 0)) {
-					return -1;
+				if(!ast_strlen_zero(xferfailsound)) {
+					res = ast_streamfile(transferer, xferfailsound, transferer->language);
+					if (!res && (ast_waitstream(transferer, "") < 0)) {
+						return -1;
+					}
 				}
 				return -1;
 			}
@@ -668,16 +675,20 @@
 			ast_log(LOG_WARNING, "Extension %s does not exist in context %s\n",xferto,transferer_real_context);
 			ast_moh_stop(transferee);
 			ast_autoservice_stop(transferee);
-			res = ast_streamfile(transferer, "beeperr", transferer->language);
-			if (!res && (ast_waitstream(transferer, "") < 0)) {
-				return -1;
+			if(!ast_strlen_zero(xferfailsound)) {
+				res = ast_streamfile(transferer, xferfailsound, transferer->language);
+				if (!res && (ast_waitstream(transferer, "") < 0)) {
+					return -1;
+				}
 			}
 		}
 	}  else {
 		ast_log(LOG_WARNING, "Did not read data.\n");
-		res = ast_streamfile(transferer, "beeperr", transferer->language);
-		if (ast_waitstream(transferer, "") < 0) {
-			return -1;
+		if(!ast_strlen_zero(xferfailsound)) {
+			res = ast_streamfile(transferer, xferfailsound, transferer->language);
+			if (ast_waitstream(transferer, "") < 0) {
+				return -1;
+			}
 		}
 	}
 	ast_moh_stop(transferee);
@@ -1402,9 +1413,13 @@
 					featuredigittimeout = DEFAULT_FEATURE_DIGIT_TIMEOUT;
 				}
 			} else if (!strcasecmp(var->name, "courtesytone")) {
-				strncpy(courtesytone, var->value, sizeof(courtesytone) - 1);
+				strncpy(courtesytone, strcmp(var->value, "undef") ? var->value : "", sizeof(courtesytone) - 1);
+			} else if (!strcasecmp(var->name, "xfersound")) {
+				strncpy(xfersound, strcmp(var->value, "undef") ? var->value : "", sizeof(xfersound) - 1);
+			} else if (!strcasecmp(var->name, "xferfailsound")) {
+				strncpy(xferfailsound, strcmp(var->value, "undef") ? var->value : "", sizeof(xferfailsound) - 1);
 			} else if (!strcasecmp(var->name, "pickupexten")) {
-				strncpy(pickup_ext, var->value, sizeof(pickup_ext) - 1);
+				strncpy(pickup_ext, strcmp(var->value, "undef") ? var->value : "", sizeof(pickup_ext) - 1);
 			}
 			var = var->next;
 		}




More information about the svn-commits mailing list