[asterisk-commits] seanbright: branch seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_se...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Mar 1 15:23:05 CST 2012


Author: seanbright
Date: Thu Mar  1 15:23:00 2012
New Revision: 357716

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=357716
Log:
Pull out some common code into a new function.

Modified:
    team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c

Modified: team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c?view=diff&rev=357716&r1=357715&r2=357716
==============================================================================
--- team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c (original)
+++ team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c Thu Mar  1 15:23:00 2012
@@ -4313,6 +4313,23 @@
 	return 0;
 }
 
+static int compare_host(struct ast_sockaddr *addr, const char *host)
+{
+	struct ast_sockaddr *addrs;
+	int num_addrs = 0, i = 0;
+
+	if ((num_addrs = ast_sockaddr_resolve(&addrs, host, 0, AST_AF_UNSPEC))) {
+		for (i = 0; i < num_addrs; i++) {
+			if (!ast_sockaddr_cmp_addr(addr, &addrs[i])) {
+				break;
+			}
+		}
+		ast_free(addrs);
+	}
+
+	return (i < num_addrs);
+}
+
 /*!
  * \note This function calls reg_source_db -> iax2_poke_peer -> find_callno,
  *       so do not call this with a pvt lock held.
@@ -4350,17 +4367,7 @@
 		if (var && addr) {
 			for (tmp = var; tmp; tmp = tmp->next) {
 				if (!strcasecmp(tmp->name, "host")) {
-					struct ast_sockaddr *addrs;
-					int num_addrs = 0, i = 0;
-					if ((num_addrs = ast_sockaddr_resolve(&addrs, tmp->value, 0, AST_AF_UNSPEC))) {
-						for (i = 0; i < num_addrs; i++) {
-							if (!ast_sockaddr_cmp_addr(addr, &addrs[i])) {
-								break;
-							}
-						}
-						ast_free(addrs);
-					}
-					if (i == num_addrs) {
+					if (!compare_host(addr, tmp->value)) {
 						/* No match */
 						ast_variables_destroy(var);
 						var = NULL;
@@ -4468,17 +4475,7 @@
 		if (var) {
 			for (tmp = var; tmp; tmp = tmp->next) {
 				if (!strcasecmp(tmp->name, "host")) {
-					struct ast_sockaddr *addrs;
-					int num_addrs = 0, i = 0;
-					if ((num_addrs = ast_sockaddr_resolve(&addrs, tmp->value, 0, AST_AF_UNSPEC))) {
-						for (i = 0; i < num_addrs; i++) {
-							if (!ast_sockaddr_cmp_addr(addr, &addrs[i])) {
-								break;
-							}
-						}
-						ast_free(addrs);
-					}
-					if (i == num_addrs) {
+					if (!compare_host(addr, tmp->value)) {
 						/* No match */
 						ast_variables_destroy(var);
 						var = NULL;




More information about the asterisk-commits mailing list