# HG changeset patch # User Sebastien Decugis # Date 1278295622 -32400 # Node ID 06692259d788c9d84d87bbdda395acc802672112 # Parent 350e1cca3782f835cb1c03e07a098c60d5ed981f Enforce address family from config when connecting to a peer diff -r 350e1cca3782 -r 06692259d788 freeDiameter/p_cnx.c --- 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)) {