diff --git a/src/ssl_ocsp.c b/src/ssl_ocsp.c index 44c86f39831be..2165c97f96bbd 100644 --- a/src/ssl_ocsp.c +++ b/src/ssl_ocsp.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -100,7 +101,7 @@ int ssl_sock_get_ocsp_arg_kt_index(int evp_keytype) int ssl_sock_ocsp_stapling_cbk(SSL *ssl, void *arg) { struct connection *conn = SSL_get_ex_data(ssl, ssl_app_data_index); - struct listener *li; + struct listener *li = NULL; struct ssl_counters *counters = NULL; struct ssl_counters *counters_px = NULL; struct certificate_ocsp *ocsp; @@ -115,8 +116,18 @@ int ssl_sock_ocsp_stapling_cbk(SSL *ssl, void *arg) if (!ctx) goto error; - if (obj_type(conn->target) == OBJ_TYPE_LISTENER) { + if (conn && obj_type(conn->target) == OBJ_TYPE_LISTENER) li = __objt_listener(conn->target); +#ifdef USE_QUIC + else if (!conn) { + struct quic_conn *qc = SSL_get_ex_data(ssl, ssl_qc_app_data_index); + + /* null if not a listener */ + li = qc->li; + } +#endif + + if (li) { counters = EXTRA_COUNTERS_GET(li->extra_counters, &ssl_stats_module); counters_px = EXTRA_COUNTERS_GET(li->bind_conf->frontend->extra_counters_fe, &ssl_stats_module); }