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

Unified Diff: components/certificate_transparency/single_tree_tracker.cc

Issue 2668803004: Certificate Transparency: Discard entries pending auditing on network change (Closed)
Patch Set: Merging with master Created 3 years, 10 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/single_tree_tracker.cc
diff --git a/components/certificate_transparency/single_tree_tracker.cc b/components/certificate_transparency/single_tree_tracker.cc
index 547ac5885d1a7c992cf147f42d32dc73511e958e..f3d151e65b4d14373762e125b458640bd4feb90f 100644
--- a/components/certificate_transparency/single_tree_tracker.cc
+++ b/components/certificate_transparency/single_tree_tracker.cc
@@ -218,6 +218,27 @@ struct SingleTreeTracker::EntryAuditState {
explicit EntryAuditState(AuditState state) : state(state) {}
};
+class SingleTreeTracker::NetworkObserver
+ : public net::NetworkChangeNotifier::NetworkChangeObserver {
+ public:
+ explicit NetworkObserver(SingleTreeTracker* parent) : parent_(parent) {
+ net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
+ }
+
+ ~NetworkObserver() override {
+ net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
+ }
+
+ // net::NetworkChangeNotifier::NetworkChangeObserver implementation.
+ void OnNetworkChanged(
+ net::NetworkChangeNotifier::ConnectionType type) override {
+ parent_->ResetPendingQueue();
+ }
+
+ private:
+ SingleTreeTracker* parent_;
+};
+
// Orders entries by the SCT timestamp. In case of tie, which is very unlikely
// as it requires two SCTs issued from a log at exactly the same time, order
// by leaf hash.
@@ -240,12 +261,13 @@ SingleTreeTracker::SingleTreeTracker(
net_log_(net::NetLogWithSource::Make(
net_log,
net::NetLogSourceType::CT_TREE_STATE_TRACKER)),
+ network_observer_(new NetworkObserver(this)),
weak_factory_(this) {
memory_pressure_listener_.reset(new base::MemoryPressureListener(base::Bind(
&SingleTreeTracker::OnMemoryPressure, base::Unretained(this))));
}
-SingleTreeTracker::~SingleTreeTracker() {}
+SingleTreeTracker::~SingleTreeTracker() = default;
void SingleTreeTracker::OnSCTVerified(net::X509Certificate* cert,
const SignedCertificateTimestamp* sct) {
@@ -348,6 +370,10 @@ void SingleTreeTracker::NewSTHObserved(const SignedTreeHead& sth) {
ProcessPendingEntries();
}
+void SingleTreeTracker::ResetPendingQueue() {
+ pending_entries_.clear();
+}
+
SingleTreeTracker::SCTInclusionStatus
SingleTreeTracker::GetLogEntryInclusionStatus(
net::X509Certificate* cert,

Powered by Google App Engine
This is Rietveld 408576698