diff libpurple/dnsquery.c @ 26923:cf373257effb

Don't do IPv6 AAAA lookups if there is no IPv6 address configured on this machine. From the getaddrinfo() man page: "If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4 addresses are returned in the list pointed to by result only if the local system has at least one IPv4 address configured, and IPv6 addresses are only returned if the local system has at least one IPv6 address configured." It's my understanding that this flag is non-standard (a GNUism perhaps), which is why it's surrounded in #ifdefs.
author Mark Doliner <mark@kingant.net>
date Wed, 20 May 2009 17:24:52 +0000
parents 8290e36a5a73
children c162a088489f
line wrap: on
line diff
--- a/libpurple/dnsquery.c	Wed May 20 17:00:17 2009 +0000
+++ b/libpurple/dnsquery.c	Wed May 20 17:24:52 2009 +0000
@@ -256,6 +256,9 @@
 		 * library.
 		 */
 		hints.ai_socktype = SOCK_STREAM;
+#ifdef AI_ADDRCONFIG
+		hints.ai_flags |= AI_ADDRCONFIG;
+#endif /* AI_ADDRCONFIG */
 		rc = getaddrinfo(dns_params.hostname, servname, &hints, &res);
 		write_to_parent(child_out, &rc, sizeof(rc));
 		if (rc != 0) {
@@ -706,6 +709,9 @@
 	 * library.
 	 */
 	hints.ai_socktype = SOCK_STREAM;
+#ifdef AI_ADDRCONFIG
+	hints.ai_flags |= AI_ADDRCONFIG;
+#endif /* AI_ADDRCONFIG */
 	if ((rc = getaddrinfo(query_data->hostname, servname, &hints, &res)) == 0) {
 		tmp = res;
 		while(res) {