Add support for draft-27
This CL updates v99 from draft 26 to draft 27. The main change is a rewrite of how transport parameters are read and written. This CL also replaces quic_enable_version_draft_25_v2 with quic_enable_version_draft_25_v3 to ensure that we only enable draft25 with the new code.
gfe-relnote: refactor transport parameter encoding code, protected by disabled flag quic_enable_version_draft_25_v3
PiperOrigin-RevId: 298427763
Change-Id: I2417b25584d914d38a55155ffddbac6e073fcd80
diff --git a/quic/core/tls_client_handshaker.cc b/quic/core/tls_client_handshaker.cc
index 6f0bc4d..4600986 100644
--- a/quic/core/tls_client_handshaker.cc
+++ b/quic/core/tls_client_handshaker.cc
@@ -167,11 +167,17 @@
const uint8_t* param_bytes;
size_t param_bytes_len;
SSL_get_peer_quic_transport_params(ssl(), ¶m_bytes, ¶m_bytes_len);
- if (param_bytes_len == 0 ||
- !ParseTransportParameters(session()->connection()->version(),
- Perspective::IS_SERVER, param_bytes,
- param_bytes_len, ¶ms)) {
- *error_details = "Unable to parse Transport Parameters";
+ if (param_bytes_len == 0) {
+ *error_details = "Server's transport parameters are missing";
+ return false;
+ }
+ std::string parse_error_details;
+ if (!ParseTransportParameters(
+ session()->connection()->version(), Perspective::IS_SERVER,
+ param_bytes, param_bytes_len, ¶ms, &parse_error_details)) {
+ DCHECK(!parse_error_details.empty());
+ *error_details =
+ "Unable to parse server's transport parameters: " + parse_error_details;
return false;
}