From 82296a193d3f5a5d931bdef4e419c44b056dd4b2 Mon Sep 17 00:00:00 2001 From: Jose Ulises Nino Rivera Date: Fri, 7 May 2021 13:12:03 -0500 Subject: [PATCH] Port of apple dns: fix interface issue with localhost lookup (#16369) Commit Message: apple dns - fix interface issue with localhost lookup Additional Description: deleting ENVOY_BUG statement, as localhost dns resolution renders a valid non-zero interface index. Risk Level: low Testing: fixed previously existing test that did not have a run block. Signed-off-by: Jose Nino Signed-off-by: Dmitri Dolguikh --- source/common/network/apple_dns_impl.cc | 2 -- test/common/network/apple_dns_impl_test.cc | 32 +--------------------- 2 files changed, 1 insertion(+), 33 deletions(-) diff --git a/source/common/network/apple_dns_impl.cc b/source/common/network/apple_dns_impl.cc index f8994cb48e8c8..a21f260005c9f 100644 --- a/source/common/network/apple_dns_impl.cc +++ b/source/common/network/apple_dns_impl.cc @@ -300,8 +300,6 @@ void AppleDnsResolverImpl::PendingResolution::onDNSServiceGetAddrInfoReply( "error_code={}, hostname={}", dns_name_, flags, flags & kDNSServiceFlagsMoreComing ? "yes" : "no", flags & kDNSServiceFlagsAdd ? "yes" : "no", interface_index, error_code, hostname); - RELEASE_ASSERT(interface_index == 0, - fmt::format("unexpected interface_index={}", interface_index)); if (!pending_cb_) { pending_cb_ = {ResolutionStatus::Success, {}}; diff --git a/test/common/network/apple_dns_impl_test.cc b/test/common/network/apple_dns_impl_test.cc index 9d9fbb534d127..5cc1f61059a9b 100644 --- a/test/common/network/apple_dns_impl_test.cc +++ b/test/common/network/apple_dns_impl_test.cc @@ -139,6 +139,7 @@ TEST_F(AppleDnsImplTest, DestructPending) { TEST_F(AppleDnsImplTest, LocalLookup) { EXPECT_NE(nullptr, resolveWithExpectations("localhost", DnsLookupFamily::Auto, DnsResolver::ResolutionStatus::Success, true)); + dispatcher_->run(Event::Dispatcher::RunType::Block); } TEST_F(AppleDnsImplTest, DnsIpAddressVersion) { @@ -400,37 +401,6 @@ TEST_F(AppleDnsImplFakeApiTest, QuerySynchronousCompletion) { dns_callback_executed.WaitForNotification(); } -TEST_F(AppleDnsImplFakeApiTest, IncorrectInterfaceIndexReturned) { - createResolver(); - - const std::string hostname = "foo.com"; - sockaddr_in addr4; - addr4.sin_family = AF_INET; - EXPECT_EQ(1, inet_pton(AF_INET, "1.2.3.4", &addr4.sin_addr)); - addr4.sin_port = htons(6502); - - Network::Address::Ipv4Instance address(&addr4); - - EXPECT_CALL(*initialize_failure_timer_, enabled()).WillOnce(Return(false)); - EXPECT_CALL(dns_service_, - dnsServiceGetAddrInfo(_, kDNSServiceFlagsShareConnection | kDNSServiceFlagsTimeout, 0, - kDNSServiceProtocol_IPv4 | kDNSServiceProtocol_IPv6, - StrEq(hostname.c_str()), _, _)) - .WillOnce(DoAll( - // Have the API call synchronously call the provided callback. Notice the incorrect - // interface_index "2". This will cause an assertion failure. - WithArgs<5, 6>(Invoke([&](DNSServiceGetAddrInfoReply callback, void* context) -> void { - EXPECT_DEATH(callback(nullptr, kDNSServiceFlagsAdd, 2, kDNSServiceErr_NoError, - hostname.c_str(), address.sockAddr(), 30, context), - "unexpected interface_index=2"); - })), - Return(kDNSServiceErr_NoError))); - - resolver_->resolve( - hostname, Network::DnsLookupFamily::Auto, - [](DnsResolver::ResolutionStatus, std::list &&) -> void { FAIL(); }); -} - TEST_F(AppleDnsImplFakeApiTest, QueryCompletedWithError) { createResolver();