Enable TLS for more tests in //gfe/gfe2/quic:end_to_end_test This change involves adding a TlsServerHandshaker::OverrideQuicConfigDefaults method to allow subclasses to change the QuicConfig based on the SNI, like can currently be done in QUIC Crypto. gfe-relnote: protected by quic version flags draft_27 and draft_25 PiperOrigin-RevId: 301896631 Change-Id: Ib74d4fa52fa49f15544d72d7f2ecbed673cd2131
diff --git a/quic/core/tls_server_handshaker.cc b/quic/core/tls_server_handshaker.cc index 6f372df..346e872 100644 --- a/quic/core/tls_server_handshaker.cc +++ b/quic/core/tls_server_handshaker.cc
@@ -54,11 +54,6 @@ // Configure the SSL to be a server. SSL_set_accept_state(ssl()); - - if (!SetTransportParameters()) { - CloseConnection(QUIC_HANDSHAKE_FAILED, - "Server failed to set Transport Parameters"); - } } TlsServerHandshaker::~TlsServerHandshaker() { @@ -155,6 +150,8 @@ return TlsHandshaker::BufferSizeLimitForLevel(level); } +void TlsServerHandshaker::OverrideQuicConfigDefaults(QuicConfig* /*config*/) {} + bool TlsServerHandshaker::SetReadSecret( EncryptionLevel level, const SSL_CIPHER* cipher, @@ -390,6 +387,11 @@ *out_alert = SSL_AD_INTERNAL_ERROR; return SSL_TLSEXT_ERR_ALERT_FATAL; } + OverrideQuicConfigDefaults(session()->config()); + if (!SetTransportParameters()) { + QUIC_LOG(ERROR) << "Failed to set transport parameters"; + return SSL_TLSEXT_ERR_ALERT_FATAL; + } QUIC_LOG(INFO) << "Set " << chain->certs.size() << " certs for server"; return SSL_TLSEXT_ERR_OK;
diff --git a/quic/core/tls_server_handshaker.h b/quic/core/tls_server_handshaker.h index ca8f28e..4141ab6 100644 --- a/quic/core/tls_server_handshaker.h +++ b/quic/core/tls_server_handshaker.h
@@ -60,6 +60,10 @@ size_t BufferSizeLimitForLevel(EncryptionLevel level) const override; protected: + // Hook to allow the server to override parts of the QuicConfig based on SNI + // before we generate transport parameters. + virtual void OverrideQuicConfigDefaults(QuicConfig* config); + const TlsConnection* tls_connection() const override { return &tls_connection_; }