Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(350)

Unified Diff: net/dns/host_resolver.cc

Issue 1903263002: DNS: Expose stale results through HostResolverImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dns_stale1
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/dns/host_resolver.cc
diff --git a/net/dns/host_resolver.cc b/net/dns/host_resolver.cc
index abe8e49e6578714bf5216398b3450135b4798da1..ecd3ff9c825908c1cddfc86dd960580337a1669f 100644
--- a/net/dns/host_resolver.cc
+++ b/net/dns/host_resolver.cc
@@ -9,6 +9,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/values.h"
+#include "net/base/net_errors.h"
#include "net/dns/dns_client.h"
#include "net/dns/dns_config_service.h"
#include "net/dns/host_cache.h"
@@ -100,11 +101,44 @@ HostResolver::RequestInfo::RequestInfo(const HostPortPair& host_port_pair)
HostResolver::~HostResolver() {
}
+int HostResolver::ResolveStaleFromCache(const RequestInfo& info,
+ AddressList* addresses,
+ HostCache::StaleEntryInfo* stale_info,
+ const BoundNetLog& net_log) {
+ // If a resolver doesn't know how to get potentially-stale results from the
+ // cache, just get fresh results instead.
+ return ResolveFromCache(info, addresses, net_log);
+}
+
+int HostResolver::ResolveStale(const RequestInfo& info,
+ RequestPriority priority,
+ AddressList* addresses,
+ const CompletionCallback& callback,
+ RequestHandle* out_req,
+ int* stale_error,
+ AddressList* stale_addresses,
+ HostCache::StaleEntryInfo* stale_info,
+ const BoundNetLog& net_log) {
+ int rv = ResolveStaleFromCache(info, addresses, stale_info, net_log);
+ // If it's a fresh cache hit, return it synchronously.
+ if (rv != ERR_DNS_CACHE_MISS && !stale_info->is_stale()) {
+ *stale_error = ERR_UNEXPECTED;
+ stale_addresses->clear();
+ return rv;
+ }
+
+ *stale_error = rv;
+ *stale_addresses = *addresses;
+ addresses->clear();
+
+ return Resolve(info, priority, addresses, callback, out_req, net_log);
+}
+
void HostResolver::SetDnsClientEnabled(bool enabled) {
}
HostCache* HostResolver::GetHostCache() {
- return NULL;
+ return nullptr;
}
std::unique_ptr<base::Value> HostResolver::GetDnsConfigAsValue() const {

Powered by Google App Engine
This is Rietveld 408576698