Module Name:    src
Committed By:   roy
Date:           Thu Oct 15 16:14:40 UTC 2015

Modified Files:
        src/external/apache2/mDNSResponder/dist/mDNSPosix: mDNSPosix.c

Log Message:
Add support for parsing IPv6 nameservers found in resolv.conf.
Fixes PR bin/42196.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
    src/external/apache2/mDNSResponder/dist/mDNSPosix/mDNSPosix.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/apache2/mDNSResponder/dist/mDNSPosix/mDNSPosix.c
diff -u src/external/apache2/mDNSResponder/dist/mDNSPosix/mDNSPosix.c:1.9 src/external/apache2/mDNSResponder/dist/mDNSPosix/mDNSPosix.c:1.10
--- src/external/apache2/mDNSResponder/dist/mDNSPosix/mDNSPosix.c:1.9	Mon Oct 12 09:29:25 2015
+++ src/external/apache2/mDNSResponder/dist/mDNSPosix/mDNSPosix.c	Thu Oct 15 16:14:40 2015
@@ -494,10 +494,11 @@ mDNSexport int ParseDNSServers(mDNS *m, 
 	while (fgets(line,sizeof(line),fp))
 		{
 		struct in_addr ina;
+		struct in6_addr ina6;
 		line[255]='\0';		// just to be safe
 		if (sscanf(line,"%10s %15s", keyword, nameserver) != 2) continue;	// it will skip whitespaces
 		if (strncasecmp(keyword,"nameserver",10)) continue;
-		if (inet_aton(nameserver, (struct in_addr *)&ina) != 0)
+		if (inet_pton(AF_INET, nameserver, &ina) == 1)
 			{
 			mDNSAddr DNSAddr;
 			DNSAddr.type = mDNSAddrType_IPv4;
@@ -505,7 +506,15 @@ mDNSexport int ParseDNSServers(mDNS *m, 
 			mDNS_AddDNSServer(m, NULL, mDNSInterface_Any, &DNSAddr, UnicastDNSPort, mDNSfalse, 0);
 			numOfServers++;
 			}
-		}  
+		else if (inet_pton(AF_INET6, nameserver, &ina6) == 1)
+			{
+			mDNSAddr DNSAddr;
+			DNSAddr.type = mDNSAddrType_IPv6;
+			DNSAddr.ip.v6 = *(mDNSv6Addr *)&ina6;
+			mDNS_AddDNSServer(m, NULL, mDNSInterface_Any, &DNSAddr, UnicastDNSPort, mDNSfalse, 0);
+			numOfServers++;
+			}
+		}
 	fclose(fp);
 	return (numOfServers > 0) ? 0 : -1;
 	}

Reply via email to