[Freeswitch-svn] [commit] r13661 - freeswitch/trunk/src

FreeSWITCH SVN mrene at freeswitch.org
Fri Jun 5 18:37:26 PDT 2009


Author: mrene
Date: Fri Jun  5 20:37:26 2009
New Revision: 13661

Log:
Add support for coma-delimited lists in a user's cidr attribute

Modified:
   freeswitch/trunk/src/switch_core.c

Modified: freeswitch/trunk/src/switch_core.c
==============================================================================
--- freeswitch/trunk/src/switch_core.c	(original)
+++ freeswitch/trunk/src/switch_core.c	Fri Jun  5 20:37:26 2009
@@ -1000,15 +1000,25 @@
 
 							if (id && user_cidr) {
 								char *token = switch_mprintf("%s@%s", id, domain);
-								switch_assert(token);
+								char *argv[100] = { 0 };
+								char *dup_cidr = strdup(user_cidr);
+								int argc, i = 0;
 								
-								if (switch_network_list_add_cidr_token(list, user_cidr, ok, token) == SWITCH_STATUS_SUCCESS) {
-									switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Adding %s (%s) [%s] to list %s\n", 
-													  user_cidr, ok ? "allow" : "deny", switch_str_nil(token), name);
-								} else {
-									switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Adding %s (%s) [%s] to list %s\n",
-													  user_cidr, ok ? "allow" : "deny", switch_str_nil(token), name);
+								switch_assert(token);
+								switch_assert(dup_cidr);
+
+								if ((argc = switch_separate_string(dup_cidr, ',', argv, (sizeof(argv) / sizeof(argv[0]))))) {
+									for (i = 0; i < argc; i++) {
+										if (switch_network_list_add_cidr_token(list, argv[i], ok, token) == SWITCH_STATUS_SUCCESS) {
+											switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Adding %s (%s) [%s] to list %s\n", 
+															  argv[i], ok ? "allow" : "deny", switch_str_nil(token), name);
+										} else {
+											switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Adding %s (%s) [%s] to list %s\n",
+															  argv[i], ok ? "allow" : "deny", switch_str_nil(token), name);
+										}
+									}
 								}
+								free(dup_cidr);
 								free(token);
 							}
 						}
@@ -1022,22 +1032,32 @@
 										
 										if (id && user_cidr) {
 											char *token = switch_mprintf("%s@%s", id, domain);
-											switch_assert(token);
+											char *argv[100] = { 0 };
+											char *dup_cidr = strdup(user_cidr);
+											int argc, i = 0;
 											
-											if (switch_network_list_add_cidr_token(list, user_cidr, ok, token) == SWITCH_STATUS_SUCCESS) {
-												switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Adding %s (%s) [%s] to list %s\n", 
-																  user_cidr, ok ? "allow" : "deny", switch_str_nil(token), name);
-											} else {
-												switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Adding %s (%s) [%s] to list %s\n",
-																  user_cidr, ok ? "allow" : "deny", switch_str_nil(token), name);
+											switch_assert(token);
+											switch_assert(dup_cidr);
+
+											if ((argc = switch_separate_string(dup_cidr, ',', argv, (sizeof(argv) / sizeof(argv[0]))))) {
+												for (i = 0; i < argc; i++) {
+													if (switch_network_list_add_cidr_token(list, argv[i], ok, token) == SWITCH_STATUS_SUCCESS) {
+														switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Adding %s (%s) [%s] to list %s\n", 
+																		  argv[i], ok ? "allow" : "deny", switch_str_nil(token), name);
+													} else {
+														switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Adding %s (%s) [%s] to list %s\n",
+																		  argv[i], ok ? "allow" : "deny", switch_str_nil(token), name);
+													}
+												}
 											}
+											free(dup_cidr);
 											free(token);
 										}
 									}
 								}
 							}
 						}
-
+						
 						switch_xml_free(xml_root);
 					} else if (cidr) {
 						if (switch_network_list_add_cidr(list, cidr, ok) == SWITCH_STATUS_SUCCESS) {



More information about the Freeswitch-svn mailing list