[Asterisk-cvs] asterisk/channels chan_sip.c,1.721,1.722

kpfleming at lists.digium.com kpfleming at lists.digium.com
Mon May 2 23:15:03 CDT 2005


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

Modified Files:
	chan_sip.c 
Log Message:
simplify argument parsing in sip_prune_realtime
don't force register expiration when pruning realtime peers
provide feedback for successful single item prune operations


Index: chan_sip.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v
retrieving revision 1.721
retrieving revision 1.722
diff -u -d -r1.721 -r1.722
--- chan_sip.c	3 May 2005 02:32:50 -0000	1.721
+++ chan_sip.c	3 May 2005 03:22:14 -0000	1.722
@@ -6490,61 +6490,62 @@
 	int prunepeer = 0;
 	int multi = 0;
 	char *name = NULL;
-	int more;
 	regex_t regexbuf;
 
-	if ((argc < 4) || (argc > 6))
-        	return RESULT_SHOWUSAGE;
-
-	more = 1;
-	if (!strcasecmp(argv[3], "user")) {
-		if (argc > 4)
-			pruneuser = 1;
-		else
+	switch (argc) {
+	case 4:
+		if (!strcasecmp(argv[3], "user"))
 			return RESULT_SHOWUSAGE;
-	} else if (!strcasecmp(argv[3], "peer")) {
-		if (argc > 4)
-			prunepeer = 1;
-		else
+		if (!strcasecmp(argv[3], "peer"))
 			return RESULT_SHOWUSAGE;
-	} else if (!strcasecmp(argv[3], "like")) {
-		if (argc == 5) {
+		if (!strcasecmp(argv[3], "like"))
+			return RESULT_SHOWUSAGE;
+		if (!strcasecmp(argv[3], "all")) {
 			multi = 1;
-			name = argv[4];
 			pruneuser = prunepeer = 1;
-			more = 0;
-		} else
+		} else {
+			pruneuser = prunepeer = 1;
+			name = argv[3];
+		}
+		break;
+	case 5:
+		if (!strcasecmp(argv[4], "like"))
 			return RESULT_SHOWUSAGE;
-	} else if (!strcasecmp(argv[3], "all")) {
-		if (argc == 4) {
+		if (!strcasecmp(argv[3], "all"))
+			return RESULT_SHOWUSAGE;
+		if (!strcasecmp(argv[3], "like")) {
 			multi = 1;
+			name = argv[4];
 			pruneuser = prunepeer = 1;
-			more = 0;
-		} else
-			return RESULT_SHOWUSAGE;
-	} else if (argc == 4) {
-		more = 0;
-		pruneuser = prunepeer = 1;
-		name = argv[3];
-	} else
-		return RESULT_SHOWUSAGE;
-
-	if (more) {
-		if (!strcasecmp(argv[4], "like")) {
-			if (argc == 6) {
+		} else if (!strcasecmp(argv[3], "user")) {
+			pruneuser = 1;
+			if (!strcasecmp(argv[4], "all"))
 				multi = 1;
-				name = argv[5];
-			} else
-				return RESULT_SHOWUSAGE;
-		} else if (!strcasecmp(argv[4], "all")) {
-			if (argc == 5)
+			else
+				name = argv[4];
+		} else if (!strcasecmp(argv[3], "peer")) {
+			prunepeer = 1;
+			if (!strcasecmp(argv[4], "all"))
 				multi = 1;
 			else
-				return RESULT_SHOWUSAGE;
-		} else if (argc == 5)
-			name = argv[4];
-		else
+				name = argv[4];
+		} else
+			return RESULT_SHOWUSAGE;
+		break;
+	case 6:
+		if (strcasecmp(argv[4], "like"))
 			return RESULT_SHOWUSAGE;
+		if (!strcasecmp(argv[3], "user")) {
+			pruneuser = 1;
+			name = argv[5];
+		} else if (!strcasecmp(argv[3], "peer")) {
+			prunepeer = 1;
+			name = argv[5];
+		} else
+			return RESULT_SHOWUSAGE;
+		break;
+	default:
+		return RESULT_SHOWUSAGE;
 	}
 
 	if (multi && name) {
@@ -6564,7 +6565,6 @@
 					continue;
 				};
 				if (ast_test_flag((&iterator->flags_page2), SIP_PAGE2_RTCACHEFRIENDS)) {
-					expire_register(iterator);
 					ASTOBJ_MARK(iterator);
 					pruned++;
 				}
@@ -6603,12 +6603,11 @@
 	} else {
 		if (prunepeer) {
 			if ((peer = ASTOBJ_CONTAINER_FIND_UNLINK(&peerl, name))) {
-				if (ast_test_flag(&peer->flags_page2, SIP_PAGE2_RTCACHEFRIENDS))
-					expire_register(peer);
-				else {
+				if (!ast_test_flag((&peer->flags_page2), SIP_PAGE2_RTCACHEFRIENDS)) {
 					ast_cli(fd, "Peer '%s' is not a Realtime peer, cannot be pruned.\n", name);
 					ASTOBJ_CONTAINER_LINK(&peerl, peer);
-				}
+				} else
+					ast_cli(fd, "Peer '%s' pruned.\n", name);
 				ASTOBJ_UNREF(peer, sip_destroy_peer);
 			} else
 				ast_cli(fd, "Peer '%s' not found.\n", name);
@@ -6618,7 +6617,8 @@
 				if (!ast_test_flag((&user->flags_page2), SIP_PAGE2_RTCACHEFRIENDS)) {
 					ast_cli(fd, "User '%s' is not a Realtime user, cannot be pruned.\n", name);
 					ASTOBJ_CONTAINER_LINK(&userl, user);
-				}
+				} else
+					ast_cli(fd, "User '%s' pruned.\n", name);
 				ASTOBJ_UNREF(user, sip_destroy_user);
 			} else
 				ast_cli(fd, "User '%s' not found.\n", name);
@@ -6685,8 +6685,6 @@
 	int x = 0, codec = 0, load_realtime = 0;
 
 	if (argc < 4)
-
-	if (argc < 4)
 		return RESULT_SHOWUSAGE;
 
 	load_realtime = (argc == 5 && !strcmp(argv[4], "load")) ? 1 : 0;




More information about the svn-commits mailing list