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

Unified Diff: components/certificate_transparency/log_dns_client.cc

Issue 2152143003: Automatically update LogDnsClient's DNS config (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Documents test members Created 4 years, 5 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: components/certificate_transparency/log_dns_client.cc
diff --git a/components/certificate_transparency/log_dns_client.cc b/components/certificate_transparency/log_dns_client.cc
index 77da9f852a0e5fb38a67050cae5c6cfba90a872c..4d6fd22cfec51072e637741ad881f7c2064e77a8 100644
--- a/components/certificate_transparency/log_dns_client.cc
+++ b/components/certificate_transparency/log_dns_client.cc
@@ -13,11 +13,13 @@
#include "base/strings/string_util.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
+#include "base/values.h"
#include "components/base32/base32.h"
#include "crypto/sha2.h"
#include "net/base/net_errors.h"
#include "net/cert/merkle_audit_proof.h"
#include "net/dns/dns_client.h"
+#include "net/dns/dns_config_service.h"
#include "net/dns/dns_protocol.h"
#include "net/dns/dns_response.h"
#include "net/dns/dns_transaction.h"
@@ -86,9 +88,21 @@ LogDnsClient::LogDnsClient(std::unique_ptr<net::DnsClient> dns_client,
net_log_(net_log),
weak_ptr_factory_(this) {
CHECK(dns_client_);
+ net::NetworkChangeNotifier::AddDNSObserver(this);
+ UpdateDnsConfig();
}
-LogDnsClient::~LogDnsClient() {}
+LogDnsClient::~LogDnsClient() {
+ net::NetworkChangeNotifier::RemoveDNSObserver(this);
+}
+
+void LogDnsClient::OnDNSChanged() {
+ UpdateDnsConfig();
+}
+
+void LogDnsClient::OnInitialDNSConfigRead() {
+ UpdateDnsConfig();
+}
void LogDnsClient::QueryLeafIndex(base::StringPiece domain_for_log,
base::StringPiece leaf_hash,
@@ -291,4 +305,11 @@ void LogDnsClient::QueryAuditProofNodesComplete(
base::Bind(query.callback, net::OK, base::Passed(std::move(proof))));
}
+void LogDnsClient::UpdateDnsConfig() {
+ net::DnsConfig config;
+ net::NetworkChangeNotifier::GetDnsConfig(&config);
+ if (config.IsValid())
+ dns_client_->SetConfig(config);
+}
+
} // namespace certificate_transparency
« no previous file with comments | « components/certificate_transparency/log_dns_client.h ('k') | components/certificate_transparency/log_dns_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698