mirror of
https://github.com/curl/curl.git
synced 2026-04-15 00:41:41 +03:00
vquic: ngtcp2 + openssl support
With the new addition of OpenSSL QUIC API support and the support in ngtcp2 main branch, make the necessary adjustments in curl to support this combination. - add support in configure.ac to detect the feature OPENSSL_QUIC_API2 in openssl - initialise ngtcp2 properly in this combination - add a Curl_vquic_init() for global initialisation that ngtcp2 likes for performance reasons - add documentation on how to build in docs/HTTP3.md - add CI testing in http3-linux.yml Assisted-by: Viktor Szakats Closes #17027
This commit is contained in:
parent
07cc50f8eb
commit
5eefdd71a3
10 changed files with 223 additions and 40 deletions
|
|
@ -50,6 +50,50 @@ improvements.
|
|||
The build examples use `$NGHTTP3_VERSION` and `$NGTCP2_VERSION` as placeholders
|
||||
for the version you build.
|
||||
|
||||
## Build with OpenSSL
|
||||
|
||||
OpenSSL v3.5.0+ offers APIs for integration with *ngtcp2* v1.12.0+. Earlier
|
||||
versions do not work.
|
||||
|
||||
Build OpenSSL (version 3.5.0 or newer):
|
||||
|
||||
% git clone --quiet --depth=1 -b openssl-$OPENSSL_VERSION https://github.com/openssl/openssl
|
||||
% cd openssl
|
||||
% ./config --prefix=<somewhere1> --libdir=lib
|
||||
% make
|
||||
% make install
|
||||
|
||||
Build nghttp3:
|
||||
|
||||
% cd ..
|
||||
% git clone -b $NGHTTP3_VERSION https://github.com/ngtcp2/nghttp3
|
||||
% cd nghttp3
|
||||
% git submodule update --init
|
||||
% autoreconf -fi
|
||||
% ./configure --prefix=<somewhere2> --enable-lib-only
|
||||
% make
|
||||
% make install
|
||||
|
||||
Build ngtcp2:
|
||||
|
||||
% cd ..
|
||||
% git clone -b $NGTCP2_VERSION https://github.com/ngtcp2/ngtcp2
|
||||
% cd ngtcp2
|
||||
% autoreconf -fi
|
||||
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-openssl
|
||||
% make
|
||||
% make install
|
||||
|
||||
Build curl:
|
||||
|
||||
% cd ..
|
||||
% git clone https://github.com/curl/curl
|
||||
% cd curl
|
||||
% autoreconf -fi
|
||||
% LDFLAGS="-Wl,-rpath,<somewhere1>/lib" ./configure --with-openssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
|
||||
% make
|
||||
% make install
|
||||
|
||||
## Build with quictls
|
||||
|
||||
OpenSSL does not offer the required APIs for building a QUIC client. You need
|
||||
|
|
@ -59,7 +103,7 @@ Build quictls (any `+quic` tagged version works):
|
|||
|
||||
% git clone --depth 1 -b openssl-3.1.4+quic https://github.com/quictls/openssl
|
||||
% cd openssl
|
||||
% ./config enable-tls1_3 --prefix=<somewhere1>
|
||||
% ./config enable-tls1_3 --prefix=<somewhere1> --libdir=lib
|
||||
% make
|
||||
% make install
|
||||
|
||||
|
|
@ -94,8 +138,6 @@ Build curl:
|
|||
% make
|
||||
% make install
|
||||
|
||||
For OpenSSL 3.0.0 or later builds on Linux for x86_64 architecture, substitute all occurrences of "/lib" with "/lib64"
|
||||
|
||||
## Build with GnuTLS
|
||||
|
||||
Build GnuTLS:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue