--- app_meetme-orig.c	2006-09-11 17:47:23.000000000 -0400
+++ app_meetme.c	2006-10-05 11:51:40.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"
@@ -2095,13 +2105,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*/
@@ -2113,51 +2122,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!\n");
-				}
 				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!\n");
+				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");

