From 22d979400acee773da1ad9c462e5c75630650f21 Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Tue, 2 Jun 2026 13:27:22 +0200 Subject: [PATCH] vquic: moving related things into subdir Move QUIC related implementations into the vquic directory. Rename files that implement a connection filter accordingly. Closes #21848 --- lib/Makefile.inc | 30 ++++++------- lib/cf-h2-proxy.c | 1 - lib/cf-ip-happy.c | 1 - lib/connect.c | 2 +- lib/curl_trc.c | 1 - lib/http_proxy.c | 3 +- lib/{ => vquic}/capsule.c | 2 +- lib/{ => vquic}/capsule.h | 0 lib/{ => vquic}/cf-capsule.c | 4 +- lib/{ => vquic}/cf-capsule.h | 0 .../cf-ngtcp2-proxy.c} | 22 +++++----- .../cf-ngtcp2-proxy.h} | 22 +++++----- lib/vquic/{curl_ngtcp2.c => cf-ngtcp2.c} | 2 +- lib/vquic/{curl_ngtcp2.h => cf-ngtcp2.h} | 0 lib/vquic/{curl_quiche.c => cf-quiche.c} | 2 +- lib/vquic/{curl_quiche.h => cf-quiche.h} | 0 lib/vquic/vquic.c | 44 ++++++++++++++++++- lib/vquic/vquic.h | 18 ++++++++ tests/unit/unit3400.c | 2 +- 19 files changed, 104 insertions(+), 52 deletions(-) rename lib/{ => vquic}/capsule.c (99%) rename lib/{ => vquic}/capsule.h (100%) rename lib/{ => vquic}/cf-capsule.c (99%) rename lib/{ => vquic}/cf-capsule.h (100%) rename lib/{cf-h3-proxy.c => vquic/cf-ngtcp2-proxy.c} (99%) rename lib/{cf-h3-proxy.h => vquic/cf-ngtcp2-proxy.h} (67%) rename lib/vquic/{curl_ngtcp2.c => cf-ngtcp2.c} (99%) rename lib/vquic/{curl_ngtcp2.h => cf-ngtcp2.h} (100%) rename lib/vquic/{curl_quiche.c => cf-quiche.c} (99%) rename lib/vquic/{curl_quiche.h => cf-quiche.h} (100%) diff --git a/lib/Makefile.inc b/lib/Makefile.inc index 28647baff4..88ca0a1ef2 100644 --- a/lib/Makefile.inc +++ b/lib/Makefile.inc @@ -121,17 +121,23 @@ LIB_VTLS_HFILES = \ vtls/wolfssl.h \ vtls/x509asn1.h -LIB_VQUIC_CFILES = \ - vquic/curl_ngtcp2.c \ - vquic/curl_quiche.c \ - vquic/vquic.c \ +LIB_VQUIC_CFILES = \ + vquic/capsule.c \ + vquic/cf-capsule.c \ + vquic/cf-ngtcp2.c \ + vquic/cf-ngtcp2-proxy.c \ + vquic/cf-quiche.c \ + vquic/vquic.c \ vquic/vquic-tls.c -LIB_VQUIC_HFILES = \ - vquic/curl_ngtcp2.h \ - vquic/curl_quiche.h \ - vquic/vquic.h \ - vquic/vquic_int.h \ +LIB_VQUIC_HFILES = \ + vquic/capsule.h \ + vquic/cf-capsule.h \ + vquic/cf-ngtcp2.h \ + vquic/cf-ngtcp2-proxy.h \ + vquic/cf-quiche.h \ + vquic/vquic.h \ + vquic/vquic_int.h \ vquic/vquic-tls.h LIB_VSSH_CFILES = \ @@ -152,11 +158,8 @@ LIB_CFILES = \ bufq.c \ bufref.c \ cf-dns.c \ - capsule.c \ - cf-capsule.c \ cf-h1-proxy.c \ cf-h2-proxy.c \ - cf-h3-proxy.c \ cf-haproxy.c \ cf-https-connect.c \ cf-ip-happy.c \ @@ -287,11 +290,8 @@ LIB_HFILES = \ bufq.h \ bufref.h \ cf-dns.h \ - capsule.h \ - cf-capsule.h \ cf-h1-proxy.h \ cf-h2-proxy.h \ - cf-h3-proxy.h \ cf-haproxy.h \ cf-https-connect.h \ cf-ip-happy.h \ diff --git a/lib/cf-h2-proxy.c b/lib/cf-h2-proxy.c index f8e5acb055..f12c094df4 100644 --- a/lib/cf-h2-proxy.c +++ b/lib/cf-h2-proxy.c @@ -42,7 +42,6 @@ #include "sendf.h" #include "select.h" #include "cf-h2-proxy.h" -#include "capsule.h" #define PROXY_H2_CHUNK_SIZE (16 * 1024) diff --git a/lib/cf-ip-happy.c b/lib/cf-ip-happy.c index e2a49b82aa..4f1787e784 100644 --- a/lib/cf-ip-happy.c +++ b/lib/cf-ip-happy.c @@ -51,7 +51,6 @@ #include "cfilters.h" #include "cf-dns.h" #include "cf-ip-happy.h" -#include "cf-h3-proxy.h" #include "curl_addrinfo.h" #include "curl_trc.h" #include "multiif.h" diff --git a/lib/connect.c b/lib/connect.c index 119231a96a..8578aed73d 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -55,7 +55,6 @@ #include "cfilters.h" #include "connect.h" #include "cf-dns.h" -#include "cf-capsule.h" #include "cf-haproxy.h" #include "cf-https-connect.h" #include "cf-ip-happy.h" @@ -65,6 +64,7 @@ #include "curlx/strparse.h" #include "vtls/vtls.h" /* for vtls cfilters */ #include "vquic/vquic.h" /* for QUIC cfilters */ +#include "vquic/cf-capsule.h" #include "progress.h" #include "conncache.h" #include "multihandle.h" diff --git a/lib/curl_trc.c b/lib/curl_trc.c index d54c171a54..a30c87ad02 100644 --- a/lib/curl_trc.c +++ b/lib/curl_trc.c @@ -35,7 +35,6 @@ #include "http_proxy.h" #include "cf-h1-proxy.h" #include "cf-h2-proxy.h" -#include "cf-h3-proxy.h" #include "cf-haproxy.h" #include "cf-https-connect.h" #include "cf-ip-happy.h" diff --git a/lib/http_proxy.c b/lib/http_proxy.c index 17e834aaf2..8c3be63b12 100644 --- a/lib/http_proxy.c +++ b/lib/http_proxy.c @@ -33,10 +33,9 @@ #include "cfilters.h" #include "cf-h1-proxy.h" #include "cf-h2-proxy.h" -#include "cf-h3-proxy.h" -#include "cf-capsule.h" #include "connect.h" #include "vauth/vauth.h" +#include "vquic/vquic.h" #include "curlx/strparse.h" static CURLcode dynhds_add_custom(struct Curl_easy *data, diff --git a/lib/capsule.c b/lib/vquic/capsule.c similarity index 99% rename from lib/capsule.c rename to lib/vquic/capsule.c index 1ba0ccfb84..2123526fff 100644 --- a/lib/capsule.c +++ b/lib/vquic/capsule.c @@ -36,7 +36,7 @@ #include "cfilters.h" #include "curl_trc.h" #include "bufq.h" -#include "capsule.h" +#include "vquic/capsule.h" /** diff --git a/lib/capsule.h b/lib/vquic/capsule.h similarity index 100% rename from lib/capsule.h rename to lib/vquic/capsule.h diff --git a/lib/cf-capsule.c b/lib/vquic/cf-capsule.c similarity index 99% rename from lib/cf-capsule.c rename to lib/vquic/cf-capsule.c index faf837dd6c..6b5d8f107e 100644 --- a/lib/cf-capsule.c +++ b/lib/vquic/cf-capsule.c @@ -31,8 +31,8 @@ #include "curl_trc.h" #include "curlx/dynbuf.h" #include "bufq.h" -#include "capsule.h" -#include "cf-capsule.h" +#include "vquic/capsule.h" +#include "vquic/cf-capsule.h" /* recv buffer: 4 chunks of 16KB = 64KB, enough for large datagrams */ #define CAPSULE_RECV_CHUNKS 4 diff --git a/lib/cf-capsule.h b/lib/vquic/cf-capsule.h similarity index 100% rename from lib/cf-capsule.h rename to lib/vquic/cf-capsule.h diff --git a/lib/cf-h3-proxy.c b/lib/vquic/cf-ngtcp2-proxy.c similarity index 99% rename from lib/cf-h3-proxy.c rename to lib/vquic/cf-ngtcp2-proxy.c index eee70e5e81..f449484292 100644 --- a/lib/cf-h3-proxy.c +++ b/lib/vquic/cf-ngtcp2-proxy.c @@ -67,7 +67,7 @@ #include "vquic/vquic-tls.h" #include "vtls/vtls.h" #include "vtls/vtls_scache.h" -#include "cf-h3-proxy.h" +#include "vquic/cf-ngtcp2-proxy.h" #include "capsule.h" /* A stream window is the maximum amount we need to buffer for @@ -3397,12 +3397,12 @@ struct Curl_cftype Curl_cft_h3_proxy = { cf_h3_proxy_query, }; -CURLcode Curl_cf_h3_proxy_create(struct Curl_cfilter **pcf, - struct Curl_easy *data, - struct connectdata *conn, - struct Curl_sockaddr_ex *addr, - uint8_t transport_in, - uint8_t transport_out) +CURLcode Curl_cf_ngtcp2_proxy_create(struct Curl_cfilter **pcf, + struct Curl_easy *data, + struct connectdata *conn, + struct Curl_sockaddr_ex *addr, + uint8_t transport_in, + uint8_t transport_out) { struct Curl_cfilter *cf = NULL; struct cf_h3_proxy_ctx *ctx; @@ -3443,10 +3443,10 @@ out: return result; } -CURLcode Curl_cf_h3_proxy_insert_after(struct Curl_cfilter *cf_at, - struct Curl_easy *data, - struct Curl_peer *dest, - bool udp_tunnel) +CURLcode Curl_cf_ngtcp2_proxy_insert_after(struct Curl_cfilter *cf_at, + struct Curl_easy *data, + struct Curl_peer *dest, + bool udp_tunnel) { struct Curl_cfilter *cf = NULL; struct cf_h3_proxy_ctx *ctx; diff --git a/lib/cf-h3-proxy.h b/lib/vquic/cf-ngtcp2-proxy.h similarity index 67% rename from lib/cf-h3-proxy.h rename to lib/vquic/cf-ngtcp2-proxy.h index 40f0fccf06..fc176fbab4 100644 --- a/lib/cf-h3-proxy.h +++ b/lib/vquic/cf-ngtcp2-proxy.h @@ -30,19 +30,17 @@ defined(USE_PROXY_HTTP3) && defined(USE_NGHTTP3) && \ defined(USE_NGTCP2) && defined(USE_OPENSSL) -CURLcode Curl_cf_h3_proxy_insert_after(struct Curl_cfilter *cf_at, - struct Curl_easy *data, - struct Curl_peer *dest, - bool udp_tunnel); +CURLcode Curl_cf_ngtcp2_proxy_insert_after(struct Curl_cfilter *cf_at, + struct Curl_easy *data, + struct Curl_peer *dest, + bool udp_tunnel); -CURLcode Curl_cf_h3_proxy_create(struct Curl_cfilter **pcf, - struct Curl_easy *data, - struct connectdata *conn, - struct Curl_sockaddr_ex *addr, - uint8_t transport_in, - uint8_t transport_out); - -extern struct Curl_cftype Curl_cft_h3_proxy; +CURLcode Curl_cf_ngtcp2_proxy_create(struct Curl_cfilter **pcf, + struct Curl_easy *data, + struct connectdata *conn, + struct Curl_sockaddr_ex *addr, + uint8_t transport_in, + uint8_t transport_out); #endif diff --git a/lib/vquic/curl_ngtcp2.c b/lib/vquic/cf-ngtcp2.c similarity index 99% rename from lib/vquic/curl_ngtcp2.c rename to lib/vquic/cf-ngtcp2.c index 796a5b782a..d27ffeaca0 100644 --- a/lib/vquic/curl_ngtcp2.c +++ b/lib/vquic/cf-ngtcp2.c @@ -69,7 +69,7 @@ #include "vquic/vquic-tls.h" #include "vtls/vtls.h" #include "vtls/vtls_scache.h" -#include "vquic/curl_ngtcp2.h" +#include "vquic/cf-ngtcp2.h" #define QUIC_MAX_STREAMS (256 * 1024) diff --git a/lib/vquic/curl_ngtcp2.h b/lib/vquic/cf-ngtcp2.h similarity index 100% rename from lib/vquic/curl_ngtcp2.h rename to lib/vquic/cf-ngtcp2.h diff --git a/lib/vquic/curl_quiche.c b/lib/vquic/cf-quiche.c similarity index 99% rename from lib/vquic/curl_quiche.c rename to lib/vquic/cf-quiche.c index 04b4f7d6db..5736341e1a 100644 --- a/lib/vquic/curl_quiche.c +++ b/lib/vquic/cf-quiche.c @@ -44,7 +44,7 @@ #include "vquic/vquic.h" #include "vquic/vquic_int.h" #include "vquic/vquic-tls.h" -#include "vquic/curl_quiche.h" +#include "vquic/cf-quiche.h" #include "transfer.h" #include "url.h" #include "bufref.h" diff --git a/lib/vquic/curl_quiche.h b/lib/vquic/cf-quiche.h similarity index 100% rename from lib/vquic/curl_quiche.h rename to lib/vquic/cf-quiche.h diff --git a/lib/vquic/vquic.c b/lib/vquic/vquic.c index dba907bbf0..2f0e072951 100644 --- a/lib/vquic/vquic.c +++ b/lib/vquic/vquic.c @@ -41,8 +41,9 @@ #include "curlx/dynbuf.h" #include "curlx/fopen.h" #include "cfilters.h" -#include "vquic/curl_ngtcp2.h" -#include "vquic/curl_quiche.h" +#include "vquic/cf-ngtcp2.h" +#include "vquic/cf-ngtcp2-proxy.h" +#include "vquic/cf-quiche.h" #include "multiif.h" #include "progress.h" #include "rand.h" @@ -788,6 +789,45 @@ CURLcode Curl_cf_quic_create(struct Curl_cfilter **pcf, #endif } +#if !defined(CURL_DISABLE_PROXY) && defined(USE_PROXY_HTTP3) + +CURLcode Curl_cf_h3_proxy_insert_after(struct Curl_cfilter *cf_at, + struct Curl_easy *data, + struct Curl_peer *dest, + bool udp_tunnel) +{ +#if defined(USE_NGTCP2) && defined(USE_NGHTTP3) + return Curl_cf_ngtcp2_proxy_insert_after(cf_at, data, dest, udp_tunnel); +#else + (void)cf_at; + return CURLE_NOT_BUILT_IN; +#endif +} + +CURLcode Curl_cf_h3_proxy_create(struct Curl_cfilter **pcf, + struct Curl_easy *data, + struct connectdata *conn, + struct Curl_sockaddr_ex *addr, + uint8_t transport_in, + uint8_t transport_out) +{ + (void)transport_in; + (void)transport_out; + DEBUGASSERT(transport_out == TRNSPRT_QUIC); +#if defined(USE_NGTCP2) && defined(USE_NGHTTP3) + return Curl_cf_ngtcp2_proxy_create(pcf, data, conn, addr, + transport_in, transport_out); +#else + *pcf = NULL; + (void)data; + (void)conn; + (void)addr; + return CURLE_NOT_BUILT_IN; +#endif +} + +#endif /* !CURL_DISABLE_PROXY && USE_PROXY_HTTP3 */ + CURLcode Curl_conn_may_http3(struct Curl_easy *data, const struct connectdata *conn, unsigned char transport) diff --git a/lib/vquic/vquic.h b/lib/vquic/vquic.h index e3d894f8c0..fe53803be3 100644 --- a/lib/vquic/vquic.h +++ b/lib/vquic/vquic.h @@ -50,6 +50,24 @@ CURLcode Curl_cf_quic_create(struct Curl_cfilter **pcf, extern struct Curl_cftype Curl_cft_http3; +#if !defined(CURL_DISABLE_PROXY) && defined(USE_PROXY_HTTP3) + +CURLcode Curl_cf_h3_proxy_insert_after(struct Curl_cfilter *cf_at, + struct Curl_easy *data, + struct Curl_peer *dest, + bool udp_tunnel); + +CURLcode Curl_cf_h3_proxy_create(struct Curl_cfilter **pcf, + struct Curl_easy *data, + struct connectdata *conn, + struct Curl_sockaddr_ex *addr, + uint8_t transport_in, + uint8_t transport_out); + +extern struct Curl_cftype Curl_cft_h3_proxy; + +#endif /* !CURL_DISABLE_PROXY && USE_PROXY_HTTP3 */ + #else #define Curl_vquic_init() 1 #endif /* !CURL_DISABLE_HTTP && USE_HTTP3 */ diff --git a/tests/unit/unit3400.c b/tests/unit/unit3400.c index 8df86c19f4..03b70b0dcd 100644 --- a/tests/unit/unit3400.c +++ b/tests/unit/unit3400.c @@ -25,7 +25,7 @@ #include "unitcheck.h" #include "bufq.h" -#include "capsule.h" +#include "vquic/capsule.h" #if defined(USE_PROXY_HTTP3) && defined(USE_NGTCP2) && \ !defined(CURL_DISABLE_PROXY) && !defined(CURL_DISABLE_HTTP)