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

Unified Diff: net/ssl/ssl_client_session_cache.cc

Issue 2525743002: Make URLRequestContext a MemoryDumpProvider (Abandoned) (Closed)
Patch Set: self review Created 4 years 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/ssl/ssl_client_session_cache.cc
diff --git a/net/ssl/ssl_client_session_cache.cc b/net/ssl/ssl_client_session_cache.cc
index fc817fdba0b410f37294f964c63be70d6e7753c4..b1bf1c73409a5c4fe1fa6fe7ff4cbcafca71d094 100644
--- a/net/ssl/ssl_client_session_cache.cc
+++ b/net/ssl/ssl_client_session_cache.cc
@@ -4,11 +4,16 @@
#include "net/ssl/ssl_client_session_cache.h"
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
#include <utility>
#include "base/memory/memory_coordinator_client_registry.h"
+#include "base/strings/stringprintf.h"
#include "base/time/clock.h"
#include "base/time/default_clock.h"
+#include "base/trace_event/process_memory_dump.h"
+#include "net/cert/x509_util_openssl.h"
#include "third_party/boringssl/src/include/openssl/ssl.h"
namespace net {
@@ -82,6 +87,44 @@ bool SSLClientSessionCache::IsExpired(SSL_SESSION* session, time_t now) {
SSL_SESSION_get_time(session) + SSL_SESSION_get_timeout(session);
}
+void SSLClientSessionCache::DumpMemoryStats(
+ base::trace_event::ProcessMemoryDump* pmd) {
+ base::AutoLock lock(lock_);
+
+ std::string absolute_name = "net/ssl_session_cache";
+ base::trace_event::MemoryAllocatorDump* cache_dump =
+ pmd->GetAllocatorDump(absolute_name);
+ // This is a singleton, so only log it once.
+ if (cache_dump)
ssid 2016/12/02 21:36:35 You'd not have to do this if this class is MDP.
+ return;
+ cache_dump = pmd->CreateAllocatorDump(absolute_name);
+ auto iter = cache_.begin();
+ while (iter != cache_.end()) {
+ auto entry = iter->second.get();
+ auto cert_chain = entry->x509_chain;
+ size_t cert_count = sk_X509_num(cert_chain);
+ base::trace_event::MemoryAllocatorDump* entry_dump =
+ pmd->CreateAllocatorDump(
+ base::StringPrintf("%s/entry_%p", absolute_name.c_str(), entry));
+ int cert_size = 0;
+ for (size_t i = 0; i < cert_count; ++i) {
+ X509* cert = sk_X509_value(cert_chain, i);
+ cert_size += i2d_X509(cert, nullptr);
+ }
+ entry_dump->AddScalar("cert_size",
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes,
+ cert_size);
+ entry_dump->AddScalar("cert_count",
+ base::trace_event::MemoryAllocatorDump::kUnitsObjects,
+ cert_count);
+ entry_dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes,
+ cert_size);
+
+ ++iter;
+ }
+}
+
void SSLClientSessionCache::FlushExpiredSessions() {
time_t now = clock_->Now().ToTimeT();
auto iter = cache_.begin();

Powered by Google App Engine
This is Rietveld 408576698