| Index: net/dns/host_resolver_impl_unittest.cc
|
| diff --git a/net/dns/host_resolver_impl_unittest.cc b/net/dns/host_resolver_impl_unittest.cc
|
| index 4953022202786795dbb91c0ad4829322e779c30c..35066e613693978c8fb3063050a973d99ab3eb59 100644
|
| --- a/net/dns/host_resolver_impl_unittest.cc
|
| +++ b/net/dns/host_resolver_impl_unittest.cc
|
| @@ -580,14 +580,57 @@ TEST_F(HostResolverImplTest, AsynchronousLookup) {
|
| }
|
|
|
| TEST_F(HostResolverImplTest, LocalhostLookup) {
|
| + // Add a rule resolving "foo.localhost" to a non-loopback IP and test
|
| + // that "foo.localhost" still resolves to loopback.
|
| + proc_->AddRuleForAllFamilies("foo.localhost", "192.168.1.42");
|
| + Request* req0 = CreateRequest("foo.localhost", 80);
|
| + EXPECT_EQ(OK, req0->Resolve());
|
| +
|
| + EXPECT_TRUE(req0->HasAddress("127.0.0.1", 80));
|
| + EXPECT_TRUE(req0->HasAddress("::1", 80));
|
| +
|
| + Request* req1 = CreateRequest("localhost6", 80, MEDIUM, ADDRESS_FAMILY_IPV4);
|
| + EXPECT_EQ(OK, req1->Resolve());
|
| + EXPECT_EQ(0u, req1->NumberOfAddresses());
|
| +
|
| + Request* req2 = CreateRequest("localhost6", 80, MEDIUM, ADDRESS_FAMILY_IPV6);
|
| + EXPECT_EQ(OK, req2->Resolve());
|
| + EXPECT_TRUE(req2->HasOneAddress("::1", 80));
|
| +
|
| + Request* req3 =
|
| + CreateRequest("localhost6", 80, MEDIUM, ADDRESS_FAMILY_UNSPECIFIED);
|
| + EXPECT_EQ(OK, req3->Resolve());
|
| + EXPECT_TRUE(req3->HasOneAddress("::1", 80));
|
| +
|
| + Request* req4 = CreateRequest("localhost", 80, MEDIUM, ADDRESS_FAMILY_IPV4);
|
| + EXPECT_EQ(OK, req4->Resolve());
|
| + EXPECT_TRUE(req4->HasOneAddress("127.0.0.1", 80));
|
| +
|
| + Request* req5 = CreateRequest("localhost", 80, MEDIUM, ADDRESS_FAMILY_IPV6);
|
| + EXPECT_EQ(OK, req5->Resolve());
|
| + EXPECT_TRUE(req5->HasOneAddress("::1", 80));
|
| +}
|
| +
|
| +// RFC 6761 localhost names should always resolve to loopback.
|
| +TEST_F(HostResolverImplTest, LocalhostShortCircuitsToLoopback) {
|
| proc_->SignalMultiple(1u);
|
| - Request* req = CreateRequest("foo.localhost", 80);
|
| - EXPECT_EQ(ERR_IO_PENDING, req->Resolve());
|
| - EXPECT_EQ(OK, req->WaitForResult());
|
| + proc_->AddRuleForAllFamilies("localhost", "192.168.1.42");
|
| + proc_->AddRuleForAllFamilies("localhost.", "192.168.1.42");
|
| +
|
| + Request* req0 = CreateRequest("localhost", 80);
|
| + EXPECT_EQ(OK, req0->Resolve());
|
| + EXPECT_TRUE(req0->HasAddress("127.0.0.1", 80));
|
| + EXPECT_TRUE(req0->HasAddress("::1", 80));
|
|
|
| - EXPECT_TRUE(req->HasOneAddress("127.0.0.1", 80));
|
| + Request* req1 = CreateRequest("localhost.", 80);
|
| + EXPECT_EQ(OK, req1->Resolve());
|
| + EXPECT_TRUE(req1->HasAddress("127.0.0.1", 80));
|
| + EXPECT_TRUE(req1->HasAddress("::1", 80));
|
|
|
| - EXPECT_EQ("localhost.", proc_->GetCaptureList()[0].hostname);
|
| + Request* req2 = CreateRequest("foo.localhost", 80);
|
| + EXPECT_EQ(OK, req2->Resolve());
|
| + EXPECT_TRUE(req2->HasAddress("127.0.0.1", 80));
|
| + EXPECT_TRUE(req2->HasAddress("::1", 80));
|
| }
|
|
|
| TEST_F(HostResolverImplTest, EmptyListMeansNameNotResolved) {
|
| @@ -1787,12 +1830,10 @@ TEST_F(HostResolverImplDnsTest, DualFamilyLocalhost) {
|
| info_proc.set_host_resolver_flags(HOST_RESOLVER_SYSTEM_ONLY);
|
| Request* req = CreateRequest(info_proc, DEFAULT_PRIORITY);
|
|
|
| - // It is resolved via getaddrinfo, so expect asynchronous result.
|
| - EXPECT_EQ(ERR_IO_PENDING, req->Resolve());
|
| - EXPECT_EQ(OK, req->WaitForResult());
|
| + EXPECT_EQ(OK, req->Resolve());
|
|
|
| - EXPECT_EQ(saw_ipv4, req->HasAddress("127.0.0.1", 80));
|
| - EXPECT_EQ(saw_ipv6, req->HasAddress("::1", 80));
|
| + EXPECT_TRUE(req->HasAddress("127.0.0.1", 80));
|
| + EXPECT_TRUE(req->HasAddress("::1", 80));
|
|
|
| // Configure DnsClient with dual-host HOSTS file.
|
| DnsConfig config_hosts = CreateValidDnsConfig();
|
|
|