Add streamz to GfeQuicClientSession such that we can get resumption rate at connection level and early-data rate at stream level.
PiperOrigin-RevId: 705152601
diff --git a/quiche/quic/core/tls_client_handshaker.cc b/quiche/quic/core/tls_client_handshaker.cc
index 784acfc..744910d 100644
--- a/quiche/quic/core/tls_client_handshaker.cc
+++ b/quiche/quic/core/tls_client_handshaker.cc
@@ -20,6 +20,7 @@
#include "quiche/quic/core/crypto/transport_parameters.h"
#include "quiche/quic/core/quic_session.h"
#include "quiche/quic/core/quic_types.h"
+#include "quiche/quic/platform/api/quic_bug_tracker.h"
#include "quiche/quic/platform/api/quic_flags.h"
#include "quiche/quic/platform/api/quic_hostname_utils.h"
#include "quiche/common/quiche_text_utils.h"
@@ -133,6 +134,7 @@
cached_state_ = session_cache_->Lookup(
server_id_, session()->GetClock()->WallNow(), SSL_get_SSL_CTX(ssl()));
}
+ session_cache_lookup_done_ = true;
if (cached_state_) {
SSL_set_session(ssl(), cached_state_->tls_session.get());
if (!cached_state_->token.empty()) {
@@ -347,7 +349,9 @@
int TlsClientHandshaker::num_sent_client_hellos() const { return 0; }
bool TlsClientHandshaker::ResumptionAttempted() const {
- QUIC_BUG_IF(quic_tls_client_resumption_attempted, !encryption_established_);
+ // Don't call this method if the session cache lookup hasn't completed yet.
+ QUIC_BUG_IF(quic_tls_client_resumption_attempted,
+ !session_cache_lookup_done_);
return cached_state_ != nullptr;
}
diff --git a/quiche/quic/core/tls_client_handshaker.h b/quiche/quic/core/tls_client_handshaker.h
index 3973589..0353ab1 100644
--- a/quiche/quic/core/tls_client_handshaker.h
+++ b/quiche/quic/core/tls_client_handshaker.h
@@ -152,6 +152,7 @@
quiche::QuicheReferenceCountedPointer<QuicCryptoNegotiatedParameters>
crypto_negotiated_params_;
+ bool session_cache_lookup_done_ = false;
bool allow_empty_alpn_for_tests_ = false;
const bool has_application_state_;