diff --git a/manager.c b/manager.c
index f868b95603005f862b054abd926ba341015ac19f..3626bd5a2f04f0554e36762a5969264c0ad6acb5 100755
--- a/manager.c
+++ b/manager.c
@@ -395,19 +395,21 @@ static int ast_is_number(char *string)
 
 static int ast_strings_to_mask(char *string) 
 {
-	int x = 0, ret = -1;
+	int x, ret = -1;
 	
 	x = ast_is_number(string);
 
-	if (x) 
+	if (x) {
 		ret = x;
-	else if (!string || ast_strlen_zero(string))
+	} else if (!string || ast_strlen_zero(string)) {
 		ret = -1;
-	else if (!strcasecmp(string, "off") || ast_false(string))
+	} else if (ast_false(string)) {
 		ret = 0;
-	else if (!strcasecmp(string, "on") || ast_true(string))
-		ret = 1;
-	else {
+	} else if (ast_true(string)) {
+		ret = 0;
+		for (x=0; x<sizeof(perms) / sizeof(perms[0]); x++)
+			ret |= perms[x].num;		
+	} else {
 		ret = 0;
 		for (x=0; x<sizeof(perms) / sizeof(perms[0]); x++) {
 			if (ast_instring(string, perms[x].label, ','))