summaryrefslogtreecommitdiff
path: root/chromium/net/dns/mojo_host_resolver_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/dns/mojo_host_resolver_impl.cc')
-rw-r--r--chromium/net/dns/mojo_host_resolver_impl.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/chromium/net/dns/mojo_host_resolver_impl.cc b/chromium/net/dns/mojo_host_resolver_impl.cc
index bf49c99ff1b..13f61d51dd4 100644
--- a/chromium/net/dns/mojo_host_resolver_impl.cc
+++ b/chromium/net/dns/mojo_host_resolver_impl.cc
@@ -9,6 +9,7 @@
#include "base/stl_util.h"
#include "net/base/address_list.h"
#include "net/base/net_errors.h"
+#include "net/base/network_interfaces.h"
#include "net/dns/host_resolver.h"
#include "net/dns/mojo_host_type_converters.h"
@@ -59,9 +60,16 @@ void MojoHostResolverImpl::Resolve(
interfaces::HostResolverRequestInfoPtr request_info,
interfaces::HostResolverRequestClientPtr client) {
DCHECK(thread_checker_.CalledOnValidThread());
- Job* job = new Job(this, resolver_,
- request_info->To<net::HostResolver::RequestInfo>(),
- net_log_, std::move(client));
+ HostResolver::RequestInfo host_request_info =
+ request_info->To<net::HostResolver::RequestInfo>();
+ if (host_request_info.is_my_ip_address()) {
+ // The proxy resolver running inside a sandbox may not be able to get the
+ // correct host name. Instead, fill it ourself if the request is for our own
+ // IP address.
+ host_request_info.set_host_port_pair(HostPortPair(GetHostName(), 80));
+ }
+ Job* job = new Job(this, resolver_, host_request_info, net_log_,
+ std::move(client));
pending_jobs_.insert(job);
job->Start();
}