SSL_CTX *ssl_quic_srv_new_ssl_ctx(void);
int qc_alloc_ssl_sock_ctx(struct quic_conn *qc, struct connection *conn);
int qc_ssl_provide_all_quic_data(struct quic_conn *qc, struct ssl_sock_ctx *ctx);
-int quic_ssl_set_tls_cbs(SSL *ssl);
static inline void qc_free_ssl_sock_ctx(struct ssl_sock_ctx **ctx)
{
}
/* Simple helper to set the specifig OpenSSL/quictls QUIC API callbacks */
-int quic_ssl_set_tls_cbs(SSL *ssl)
+static int quic_ssl_set_tls_cbs(SSL *ssl)
{
- struct quic_conn *qc = SSL_get_ex_data(ssl, ssl_qc_app_data_index);
-
- /* Ignore the TCP connections */
- if (!qc)
- return 1;
-
#ifdef HAVE_OPENSSL_QUIC
return SSL_set_quic_tls_cbs(ssl, ha_quic_dispatch, NULL);
#else
SSL_set_verify(ssl, SSL_CTX_get_verify_mode(ctx), ssl_sock_bind_verifycbk);
SSL_set_client_CA_list(ssl, SSL_dup_CA_list(SSL_CTX_get_client_CA_list(ctx)));
SSL_set_SSL_CTX(ssl, ctx);
-#if defined(USE_QUIC) && defined(HAVE_OPENSSL_QUIC)
- quic_ssl_set_tls_cbs(ssl);
-#endif
}
/*
HA_RWLOCK_WRLOCK(SSL_GEN_CERTS_LOCK, &ssl_ctx_lru_rwlock);
lru = lru64_lookup(key, ssl_ctx_lru_tree, bind_conf->ca_sign_ckch->cert, 0);
if (lru && lru->domain) {
- if (ssl) {
+ if (ssl)
SSL_set_SSL_CTX(ssl, (SSL_CTX *)lru->data);
-#if defined(USE_QUIC) && defined(HAVE_OPENSSL_QUIC)
- quic_ssl_set_tls_cbs(ssl);
-#endif
- }
HA_RWLOCK_WRUNLOCK(SSL_GEN_CERTS_LOCK, &ssl_ctx_lru_rwlock);
return (SSL_CTX *)lru->data;
}
lru64_commit(lru, ssl_ctx, cacert, 0, (void (*)(void *))SSL_CTX_free);
}
SSL_set_SSL_CTX(ssl, ssl_ctx);
-#if defined(USE_QUIC) && defined(HAVE_OPENSSL_QUIC)
- quic_ssl_set_tls_cbs(ssl);
-#endif
HA_RWLOCK_WRUNLOCK(SSL_GEN_CERTS_LOCK, &ssl_ctx_lru_rwlock);
return 1;
}
else {
ssl_ctx = ssl_sock_do_create_cert(servername, bind_conf, ssl);
SSL_set_SSL_CTX(ssl, ssl_ctx);
-#if defined(USE_QUIC) && defined(HAVE_OPENSSL_QUIC)
- quic_ssl_set_tls_cbs(ssl);
-#endif
/* No LRU cache, this CTX will be released as soon as the session dies */
SSL_CTX_free(ssl_ctx);
return 1;