Handle 0-RTT in TlsClientHandshaker
Tls-in-quic 0-rtt change, protected by disabled flag quic_enable_zero_rtt_for_tls
PiperOrigin-RevId: 312540775
Change-Id: I3d26ee14db86a7b81d0886f9951c41acb2d469b1
diff --git a/quic/core/tls_server_handshaker.cc b/quic/core/tls_server_handshaker.cc
index 203726a..012cb11 100644
--- a/quic/core/tls_server_handshaker.cc
+++ b/quic/core/tls_server_handshaker.cc
@@ -353,6 +353,16 @@
}
void TlsServerHandshaker::FinishHandshake() {
+ if (SSL_in_early_data(ssl())) {
+ // If the server accepts early data, SSL_do_handshake returns success twice:
+ // once after processing the ClientHello and sending the server's first
+ // flight, and then again after the handshake is complete. This results in
+ // FinishHandshake getting called twice. On the first call to
+ // FinishHandshake, we don't have any confirmation that the client is live,
+ // so all end of handshake processing is deferred until the handshake is
+ // actually complete.
+ return;
+ }
if (!valid_alpn_received_) {
QUIC_DLOG(ERROR)
<< "Server: handshake finished without receiving a known ALPN";