Index: net/quic/crypto/quic_crypto_server_config.cc |
diff --git a/net/quic/crypto/quic_crypto_server_config.cc b/net/quic/crypto/quic_crypto_server_config.cc |
index 85de457d37eafa8a9dc31aa70b1f37fc510c1874..e2b0583e052d2d586cfe23dea23b8839ed628605 100644 |
--- a/net/quic/crypto/quic_crypto_server_config.cc |
+++ b/net/quic/crypto/quic_crypto_server_config.cc |
@@ -147,6 +147,11 @@ class VerifyNonceIsValidAndUniqueCallback |
// static |
const char QuicCryptoServerConfig::TESTING[] = "secret string for testing"; |
+PrimaryConfigChangedCallback::PrimaryConfigChangedCallback() { |
+} |
+ |
+PrimaryConfigChangedCallback::~PrimaryConfigChangedCallback() { |
+} |
ValidateClientHelloResultCallback::ValidateClientHelloResultCallback() { |
} |
@@ -792,6 +797,9 @@ void QuicCryptoServerConfig::SelectNewPrimaryConfig( |
<< base::HexEncode( |
reinterpret_cast<const char*>(primary_config_->orbit), |
kOrbitSize); |
+ if (primary_config_changed_cb_.get() != NULL) { |
+ primary_config_changed_cb_->Run(primary_config_->id); |
+ } |
return; |
} |
@@ -809,6 +817,9 @@ void QuicCryptoServerConfig::SelectNewPrimaryConfig( |
reinterpret_cast<const char*>(primary_config_->orbit), |
kOrbitSize); |
next_config_promotion_time_ = QuicWallTime::Zero(); |
+ if (primary_config_changed_cb_.get() != NULL) { |
+ primary_config_changed_cb_->Run(primary_config_->id); |
+ } |
} |
void QuicCryptoServerConfig::EvaluateClientHello( |
@@ -1192,6 +1203,12 @@ void QuicCryptoServerConfig::set_server_nonce_strike_register_window_secs( |
server_nonce_strike_register_window_secs_ = window_secs; |
} |
+void QuicCryptoServerConfig::AcquirePrimaryConfigChangedCb( |
+ PrimaryConfigChangedCallback* cb) { |
+ base::AutoLock locked(configs_lock_); |
+ primary_config_changed_cb_.reset(cb); |
+} |
+ |
string QuicCryptoServerConfig::NewSourceAddressToken( |
const IPEndPoint& ip, |
QuicRandom* rand, |