QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_CRYPTO_LIB, NULL);
goto err;
}
+#if defined(OPENSSL_THREADS)
+ if ((qc->mutex = ossl_crypto_mutex_new()) == NULL) {
+ QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_CRYPTO_LIB, NULL);
+ goto err;
+ }
+#endif
/* Initialise the QUIC_CONNECTION's stub header. */
ssl_base = &qc->ssl;
sc->options &= OSSL_QUIC_PERMITTED_OPTIONS_CONN;
sc->pha_enabled = 0;
-#if defined(OPENSSL_THREADS)
- if ((qc->mutex = ossl_crypto_mutex_new()) == NULL) {
- QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_CRYPTO_LIB, NULL);
- goto err;
- }
-#endif
-
#if !defined(OPENSSL_NO_QUIC_THREAD_ASSIST)
qc->is_thread_assisted
= (ssl_base->method == OSSL_QUIC_client_thread_method());
return ssl_base;
err:
- if (qc != NULL) {
+ if (ssl_base == NULL) {
#if defined(OPENSSL_THREADS)
ossl_crypto_mutex_free(qc->mutex);
#endif
- ossl_quic_channel_free(qc->ch);
- SSL_free(qc->tls);
+ OPENSSL_free(qc);
+ } else {
+ SSL_free(ssl_base);
}
- OPENSSL_free(qc);
return NULL;
}