MINOR: quic: Add useful error traces about qc_ssl_sess_init() failures
authorFrederic Lecaille <flecaille@haproxy.com>
Thu, 15 May 2025 08:18:09 +0000 (10:18 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 20 May 2025 16:15:03 +0000 (18:15 +0200)
There were no traces to diagnose qc_ssl_sess_init() failures from QUIC traces.
This patch add calls to TRACE_DEVEL() into qc_ssl_sess_init() and its caller
(qc_alloc_ssl_sock_ctx()). This was useful at least to diagnose SSL context
initialization failures when porting QUIC to the new OpenSSL 3.5 QUIC API.

Should be easily backported as far as 2.6.

(cherry picked from commit 894595b711835dba9a7432fa364ea57806b2bb0c)
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit 76636502b94941061a887566d268ffa6f01e61ca)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>

src/quic_ssl.c

index 563f490..d6b4834 100644 (file)
@@ -749,7 +749,7 @@ static int qc_ssl_sess_init(struct quic_conn *qc, SSL_CTX *ssl_ctx, SSL **ssl)
        *ssl = SSL_new(ssl_ctx);
        if (!*ssl) {
                if (!retry--)
-                       goto leave;
+                       goto err;
 
                pool_gc(NULL);
                goto retry;
@@ -760,7 +760,7 @@ static int qc_ssl_sess_init(struct quic_conn *qc, SSL_CTX *ssl_ctx, SSL **ssl)
                SSL_free(*ssl);
                *ssl = NULL;
                if (!retry--)
-                       goto leave;
+                       goto err;
 
                pool_gc(NULL);
                goto retry;
@@ -770,6 +770,9 @@ static int qc_ssl_sess_init(struct quic_conn *qc, SSL_CTX *ssl_ctx, SSL **ssl)
  leave:
        TRACE_LEAVE(QUIC_EV_CONN_NEW, qc);
        return ret;
+ err:
+       TRACE_DEVEL("leaving on error", QUIC_EV_CONN_NEW, qc);
+       goto leave;
 }
 
 #ifdef HAVE_SSL_0RTT_QUIC
@@ -867,6 +870,7 @@ int qc_alloc_ssl_sock_ctx(struct quic_conn *qc)
        return !ret;
 
  err:
+       TRACE_DEVEL("leaving on error", QUIC_EV_CONN_NEW, qc);
        pool_free(pool_head_quic_ssl_sock_ctx, ctx);
        goto leave;
 }