We should retain the TLS1_FLAGS_QUIC setting in in s3.flags even after a
"clear" operation.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21686)
int ssl3_clear(SSL *s)
{
SSL_CONNECTION *sc = SSL_CONNECTION_FROM_SSL(s);
+ int flags;
if (sc == NULL)
return 0;
OPENSSL_free(sc->s3.alpn_selected);
OPENSSL_free(sc->s3.alpn_proposed);
- /* NULL/zero-out everything in the s3 struct */
+ /*
+ * NULL/zero-out everything in the s3 struct, but remember if we are doing
+ * QUIC.
+ */
+ flags = sc->s3.flags & TLS1_FLAGS_QUIC;
memset(&sc->s3, 0, sizeof(sc->s3));
+ sc->s3.flags |= flags;
if (!ssl_free_wbio_buffer(sc))
return 0;