From 17628b15ec317c01037cc086edff3b86da9760d5 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 23 Dec 2025 12:24:30 +0100 Subject: [PATCH] vquic: initialize new callback in nghttp3 1.14.0+ Fixing (seen in curl-for-win production build): ``` lib/vquic/curl_ngtcp2.c:1257:1: error: missing field 'recv_settings2' initializer [-Werror,-Wmissing-field-initializers] 1257 | }; | ^ 1 error generated. ``` Ref: https://ci.appveyor.com/project/curlorg/curl-for-win/builds/53281785#L6752 Ref: https://github.com/curl/curl/actions/runs/20459295003/job/58788229134#step:3:5513 Also: - Mark previous callback deprecated. - Document ngtcp2, nghttp3 versions for callback entry feature guards. Refs: https://github.com/ngtcp2/nghttp3/releases/tag/v1.14.0 https://github.com/ngtcp2/nghttp3/pull/432 https://github.com/ngtcp2/nghttp3/commit/1616ab835061d7cdd2ef114bc3ddb917ce269611 Closes #20077 --- lib/vquic/curl_ngtcp2.c | 9 ++++++--- lib/vquic/curl_osslq.c | 7 +++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/vquic/curl_ngtcp2.c b/lib/vquic/curl_ngtcp2.c index 20b9240f09..7a0c214422 100644 --- a/lib/vquic/curl_ngtcp2.c +++ b/lib/vquic/curl_ngtcp2.c @@ -877,7 +877,7 @@ static ngtcp2_callbacks ng_callbacks = { cb_recv_rx_key, NULL, /* recv_tx_key */ NULL, /* early_data_rejected */ -#ifdef NGTCP2_CALLBACKS_V2 +#ifdef NGTCP2_CALLBACKS_V2 /* ngtcp2 v1.14.0+ */ NULL, /* begin_path_validation */ #endif }; @@ -1291,12 +1291,15 @@ static nghttp3_callbacks ngh3_callbacks = { NULL, /* end_stream */ cb_h3_reset_stream, NULL, /* shutdown */ - NULL, /* recv_settings */ -#ifdef NGHTTP3_CALLBACKS_V2 + NULL, /* recv_settings (deprecated) */ +#ifdef NGHTTP3_CALLBACKS_V2 /* nghttp3 v1.11.0+ */ NULL, /* recv_origin */ NULL, /* end_origin */ NULL, /* rand */ #endif +#ifdef NGHTTP3_CALLBACKS_V3 /* nghttp3 v1.14.0+ */ + NULL, /* recv_settings2 */ +#endif }; static CURLcode init_ngh3_conn(struct Curl_cfilter *cf, diff --git a/lib/vquic/curl_osslq.c b/lib/vquic/curl_osslq.c index cffe61a402..537484faf6 100644 --- a/lib/vquic/curl_osslq.c +++ b/lib/vquic/curl_osslq.c @@ -1074,12 +1074,15 @@ static nghttp3_callbacks ngh3_callbacks = { NULL, /* end_stream */ cb_h3_reset_stream, NULL, /* shutdown */ - NULL, /* recv_settings */ -#ifdef NGHTTP3_CALLBACKS_V2 + NULL, /* recv_settings (deprecated) */ +#ifdef NGHTTP3_CALLBACKS_V2 /* nghttp3 v1.11.0+ */ NULL, /* recv_origin */ NULL, /* end_origin */ NULL, /* rand */ #endif +#ifdef NGHTTP3_CALLBACKS_V3 /* nghttp3 v1.14.0+ */ + NULL, /* recv_settings2 */ +#endif }; static CURLcode cf_osslq_h3conn_init(struct cf_osslq_ctx *ctx, SSL *conn,