Module Name:    src
Committed By:   roy
Date:           Thu Oct 15 11:21:53 UTC 2015

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

Log Message:
Derive our primary interface and address by trying to connect to an
address in the TEST-NET-2 network as noted in RFC5737 instead of using
the 1.1.1.1 address. Also, use port 7 (echo) for better style.
Fixes PR bin/46758 thanks to Lloyd Parkes.

While here, if we do fail to connect to the test address, don't spam
this to the console as it's a common case during the boot sequence.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
    src/external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c
cvs rdiff -u -r1.1.1.3 -r1.2 \
    src/external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.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/PosixDaemon.c
diff -u src/external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c:1.7 src/external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c:1.8
--- src/external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c:1.7	Thu Oct 15 10:15:18 2015
+++ src/external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c	Thu Oct 15 11:21:53 2015
@@ -92,7 +92,8 @@ mDNSlocal void mDNS_StatusCallback(mDNS 
 static void Reconfigure(mDNS *m)
 	{
 	mDNSAddr DynDNSIP;
-	const mDNSAddr dummy = { mDNSAddrType_IPv4, { { { 1, 1, 1, 1 } } } };;
+	// Use a random address from TEST-NET-2	in RFC5737
+	const mDNSAddr dummy = { mDNSAddrType_IPv4, { { { 198, 51, 100, 42 } } } };;
 	mDNS_SetPrimaryInterfaceInfo(m, NULL, NULL, NULL);
         mDNS_Lock(m);
 	if (ParseDNSServers(m, uDNS_SERVERS_FILE) < 0)

Index: src/external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c
diff -u src/external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c:1.1.1.3 src/external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c:1.2
--- src/external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c:1.1.1.3	Mon Mar 31 23:21:22 2014
+++ src/external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c	Thu Oct 15 11:21:53 2015
@@ -47,7 +47,7 @@ mDNSexport void mDNSPlatformSourceAddrFo
 		addr.a4.sin_len         = inner_len;
 		#endif
 		addr.a4.sin_family      = AF_INET;
-		addr.a4.sin_port        = 1;	// Not important, any port will do
+		addr.a4.sin_port        = 7;	// Not important, any port will do
 		addr.a4.sin_addr.s_addr = dst->ip.v4.NotAnInteger;
 		}
 	else if (dst->type == mDNSAddrType_IPv6)
@@ -58,14 +58,26 @@ mDNSexport void mDNSPlatformSourceAddrFo
 		#endif
 		addr.a6.sin6_family   = AF_INET6;
 		addr.a6.sin6_flowinfo = 0;
-		addr.a6.sin6_port     = 1;	// Not important, any port will do
+		addr.a6.sin6_port     = 7;	// Not important, any port will do
 		addr.a6.sin6_addr     = *(struct in6_addr*)&dst->ip.v6;
 		addr.a6.sin6_scope_id = 0;
 		}
 	else return;
 
 	if ((connect(sock, &addr.s, inner_len)) < 0)
-		{ LogMsg("mDNSPlatformSourceAddrForDest: connect %#a failed errno %d (%s)", dst, errno, strerror(errno)); goto exit; }
+		{
+		static mDNSv4Addr dummy = { 198, 51, 100, 42 };
+
+		// Don't spam if we can't connect to 198.51.100.42 to the console.
+		// That is our test address to out which interfaces/address should be primary and is also
+		// configured in mDNSPosix/PosixDaemon.c:Reconfigure()
+		// Failing to connect to it with EADDRNOTAVAIL is a common situation, especially on boot up.
+		if (dst->type == mDNSAddrType_IPv4 && dst->ip.v4.NotAnInteger == dummy.NotAnInteger && errno == EADDRNOTAVAIL)
+		    LogInfo("mDNSPlatformSourceAddrForDest: connect %#a failed errno %d (%s)", dst, errno, strerror(errno));
+		else
+		    LogMsg("mDNSPlatformSourceAddrForDest: connect %#a failed errno %d (%s)", dst, errno, strerror(errno));
+		goto exit;
+		}
 
 	if ((getsockname(sock, &addr.s, &len)) < 0)
 		{ LogMsg("mDNSPlatformSourceAddrForDest: getsockname failed errno %d (%s)", errno, strerror(errno)); goto exit; }

Reply via email to