--- asterisk-1.2.7.1/apps/app_meetme.c	2006-04-06 18:15:20.000000000 -0400
+++ asterisk-1.2.7.1-mod/apps/app_meetme.c	2006-05-10 12:31:36.000000000 -0400
@@ -121,6 +121,16 @@
 "      'M' -- Mute conference\n"
 "      'n' -- Unmute entire conference (except admin)\n"
 "      'N' -- Mute entire conference (except admin)\n"
+"      'S' -- Raise entire conference speaking volume\n"
+"      's' -- Lower entire conference speaking volume\n"
+"      'V' -- Raise entire conference listening volume\n"
+"      'v' -- Lower entire conference listening volume\n"
+"      'T' -- Raise one user's talk volume\n"
+"      't' -- Lower one user's talk volume\n"
+"      'U' -- Raise one user's listen volume\n"
+"      'u' -- Lower one user's listen volume\n"
+"      'R' -- Reset all user's volume settings\n"
+"      'r' -- Reset one user's volume settings\n"
 "";
 
 #define CONFIG_FILE_NAME "meetme.conf"
@@ -2068,13 +2078,12 @@
 				break;
 			case 75: /* K: kick all users*/
 				user = cnf->firstuser;
-				while(user) {
+				while (user) {
 					user->adminflags |= ADMINFLAG_KICKME;
-					if (user->nextuser) {
+					if (user->nextuser)
 						user = user->nextuser;
-					} else {
+					else
 						break;
-					}
 				}
 				break;
 			case 101: /* e: Eject last user*/
@@ -2086,51 +2095,125 @@
 					ast_log(LOG_NOTICE, "Not kicking last user, is an Admin!\n");
 				break;
 			case 77: /* M: Mute */ 
-				if (user) {
+				if (user)
 					user->adminflags |= ADMINFLAG_MUTED;
-				} else {
+				else
 					ast_log(LOG_NOTICE, "Specified User not found!\n");
-				}
 				break;
 			case 78: /* N: Mute all users */
 				user = cnf->firstuser;
-				while(user) {
+				while (user) {
 					if (user && !(user->userflags & CONFFLAG_ADMIN))
 						user->adminflags |= ADMINFLAG_MUTED;
-					if (user->nextuser) {
+					if (user->nextuser)
 						user = user->nextuser;
-					} else {
+					else
 						break;
-					}
 				}
 				break;					
 			case 109: /* m: Unmute */ 
-				if (user && (user->adminflags & ADMINFLAG_MUTED)) {
+				if (user && (user->adminflags & ADMINFLAG_MUTED))
 					user->adminflags ^= ADMINFLAG_MUTED;
-				} else {
+				else
 					ast_log(LOG_NOTICE, "Specified User not found or he muted himself!");
-				}
 				break;
 			case  110: /* n: Unmute all users */
 				user = cnf->firstuser;
-				while(user) {
-					if (user && (user-> adminflags & ADMINFLAG_MUTED)) {
+				while (user) {
+					if (user && (user-> adminflags & ADMINFLAG_MUTED))
 						user->adminflags ^= ADMINFLAG_MUTED;
-					}
-					if (user->nextuser) {
+					if (user->nextuser)
 						user = user->nextuser;
-					} else {
+					else
 						break;
-					}
 				}
 				break;
 			case 107: /* k: Kick user */ 
-				if (user) {
+				if (user)
 					user->adminflags |= ADMINFLAG_KICKME;
-				} else {
+				else
 					ast_log(LOG_NOTICE, "Specified User not found!");
+				break;
+			case 118: /* v: Lower all users listen volume */
+				user = cnf->firstuser;
+				while(user) {
+					tweak_listen_volume(user, VOL_DOWN);
+					if (user->nextuser)
+						user = user->nextuser;
+					else
+						break;
+				}
+				break;
+			case 86: /* V: Raise all users listen volume */
+				user = cnf->firstuser;
+				while (user) {
+					tweak_listen_volume(user, VOL_UP);
+					if (user->nextuser)
+						user = user->nextuser;
+					else
+						break;
 				}
 				break;
+			case 115: /* s: Lower all users speaking volume */
+				user = cnf->firstuser;
+				while (user) {
+					tweak_talk_volume(user, VOL_DOWN);
+					if (user->nextuser)
+						user = user->nextuser;
+					else
+						break;
+				}
+				break;
+			case 83: /* S: Raise all users speaking volume */
+				user = cnf->firstuser;
+				while (user) {
+					tweak_talk_volume(user, VOL_UP);
+					if (user->nextuser)
+						user = user->nextuser;
+					else
+						break;
+				}
+				break;
+			case 82: /* R: Reset all volume levels */
+				user = cnf->firstuser;
+				while (user) {
+					reset_volumes(user);
+					if (user->nextuser) 
+						user = user->nextuser;
+					else
+						break;
+				}
+				break;
+			case 114: /* r: Reset user's volume level */
+				if (user)
+					reset_volumes(user);
+				else
+					ast_log(LOG_NOTICE, "Specified User not found!");
+				break;
+			case 85: /* U: Raise user's listen volume */
+				if (user)
+					tweak_listen_volume(user, VOL_UP);
+				else
+					ast_log(LOG_NOTICE, "Specified User not found!");
+				break;
+			case 117: /* u: Lower user's listen volume */
+				if (user)
+					tweak_listen_volume(user, VOL_DOWN);
+				else
+					ast_log(LOG_NOTICE, "Specified User not found!");
+				break;
+			case 84: /* T: Raise user's talk volume */
+				if (user)
+					tweak_talk_volume(user, VOL_UP);
+				else
+					ast_log(LOG_NOTICE, "Specified User not found!");
+				break;
+			case 116: /* t: Lower user's talk volume */
+				if (user) 
+					tweak_talk_volume(user, VOL_DOWN);
+				else 
+					ast_log(LOG_NOTICE, "Specified User not found!");
+				break;
 			}
 		} else {
 			ast_log(LOG_NOTICE, "Conference Number not found\n");

