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; }