changeset 370:06692259d788

Enforce address family from config when connecting to a peer
author Sebastien Decugis <sdecugis@nict.go.jp>
date Mon, 05 Jul 2010 11:07:02 +0900
parents 350e1cca3782
children ba39f4afd45d
files freeDiameter/p_cnx.c
diffstat 1 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/freeDiameter/p_cnx.c	Sat Jul 03 14:14:00 2010 +0900
+++ b/freeDiameter/p_cnx.c	Mon Jul 05 11:07:02 2010 +0900
@@ -87,7 +87,8 @@
 		ret = getaddrinfo(peer->p_hdr.info.pi_diamid, NULL, &hints, &ai);
 		if (ret) {
 			fd_log_debug("Unable to resolve address for peer '%s' (%s), aborting\n", peer->p_hdr.info.pi_diamid, gai_strerror(ret));
-			fd_psm_terminate( peer, NULL );
+			if (ret != EAI_AGAIN)
+				fd_psm_terminate( peer, NULL );
 			return 0;
 		}
 		
@@ -105,6 +106,16 @@
 						AF_INET 
 						: AF_INET6));
 	}
+	if (fd_g_config->cnf_flags.no_ip4) {
+		CHECK_FCT( fd_ep_filter_family(
+					&peer->p_hdr.info.pi_endpoints, 
+					AF_INET6));
+	}
+	if (fd_g_config->cnf_flags.no_ip6) {
+		CHECK_FCT( fd_ep_filter_family(
+					&peer->p_hdr.info.pi_endpoints, 
+					AF_INET));
+	}
 	
 	/* Now check we have at least one address to attempt */
 	if (FD_IS_LIST_EMPTY(&peer->p_hdr.info.pi_endpoints)) {
"Welcome to our mercurial repository"