diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 42f42fc1362eaee0c9790be6e124f5315d145ea4..ef2ff3de919304269a32f0a010429cea364d1580 100755
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -5,7 +5,7 @@
  * 
  * Copyright (C) 1999-2004, Digium, Inc.
  *
- * Mark Spencer <markster@linux-support.net>
+ * Mark Spencer <markster@digium.com>
  *
  * This program is free software, distributed under the terms of
  * the GNU General Public License
@@ -511,6 +511,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
 	char *agifiledefault = "conf-background.agi";
 	char meetmesecs[30] = "";
 	char exitcontext[AST_MAX_EXTENSION] = "";
+	int dtmf;
 
 	ZT_BUFFERINFO bi;
 	char __buf[CONF_SIZE + AST_FRIENDLY_OFFSET];
@@ -840,10 +841,14 @@ zapretry:
 							menu_active = 1;
 							/* Record this sound! */
 							if (!ast_streamfile(chan, "conf-adminmenu", chan->language))
-								ast_waitstream(chan, "");
-						} else {
-							switch(f->subclass - 48) {
-								case 1: /* Un/Mute */
+								dtmf = ast_waitstream(chan, AST_DIGIT_ANY);
+							else
+								dtmf = 0;
+						} else 
+							dtmf = f->subclass;
+						if (dtmf) {
+							switch(dtmf) {
+								case '1': /* Un/Mute */
 									menu_active = 0;
 		 							if (ztc.confmode & ZT_CONF_TALKER) {
 	 						       		ztc.confmode = ZT_CONF_CONF | ZT_CONF_LISTENER;
@@ -865,7 +870,7 @@ zapretry:
 											ast_waitstream(chan, "");
 									}
 									break;
-								case 2: /* Un/Lock the Conference */
+								case '2': /* Un/Lock the Conference */
 									menu_active = 0;
 									if (conf->locked) {
 										conf->locked = 0;
@@ -891,10 +896,14 @@ zapretry:
 							menu_active = 1;
 							/* Record this sound! */
 							if (!ast_streamfile(chan, "conf-usermenu", chan->language))
-								ast_waitstream(chan, "");
-						} else {
-							switch(f->subclass - 48) {
-								case 1: /* Un/Mute */
+								dtmf = ast_waitstream(chan, AST_DIGIT_ANY);
+							else
+								dtmf = 0;
+						} else 
+							dtmf = f->subclass;
+						if (dtmf) {
+							switch(dtmf) {
+								case '1': /* Un/Mute */
 									menu_active = 0;
 		 							if (ztc.confmode & ZT_CONF_TALKER) {
 	 						       		ztc.confmode = ZT_CONF_CONF | ZT_CONF_LISTENER;
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index 39fd33244174a643be6db02efb0ee8d8d622e0cd..b067e2fe4abf3b27a3200e98aa092994b0835b38 100755
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -1195,13 +1195,21 @@ static int handle_context_add_extension(int fd, int argc, char *argv[])
 			}
 		}
 	}
-	app = strsep(&whole_exten, ",");
+	app = whole_exten;
 	if (app && (start = strchr(app, '(')) && (end = strrchr(app, ')'))) {
 		*start = *end = '\0';
 		app_data = start + 1;
 		process_quotes_and_slashes(app_data, ',', '|');
-	} else
-		app_data = whole_exten;
+	} else {
+		if (app) {
+			app_data = strchr(app, ',');
+			if (app_data) {
+				*app_data = '\0';
+				app_data++;
+			}
+		} else	
+			app_data = NULL;
+	}
 
 	if (!exten || !prior || !app || (!app_data && iprior != PRIORITY_HINT)) return RESULT_SHOWUSAGE;
 
diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index 2cbb59c052753c92376271e9e4398778660b9f92..2dc39a5c65f85aaaab6decc1f3acbaa163961e5a 100755
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -3,9 +3,9 @@
  *
  * Routines implementing music on hold
  * 
- * Copyright (C) 1999, Mark Spencer
+ * Copyright (C) 1999-2004, Digium, Inc.
  *
- * Mark Spencer <markster@linux-support.net>
+ * Mark Spencer <markster@digium.com>
  *
  * This program is free software, distributed under the terms of
  * the GNU General Public License