mirror of
https://github.com/curl/curl.git
synced 2026-07-23 01:47:16 +03:00
http3: initial support for OpenSSL 3.2 QUIC stack
- HTTP/3 for curl using OpenSSL's own QUIC stack together
with nghttp3
- configure with `--with-openssl-quic` to enable curl to
build this. This requires the nghttp3 library
- implementation with the following restrictions:
* macOS has to use an unconnected UDP socket due to an
issue in OpenSSL's datagram implementation
See https://github.com/openssl/openssl/issues/23251
This makes connections to non-reponsive servers hang.
* GET requests will send the indicator that they have
no body in a separate QUIC packet. This may result
in processing delays or Transfer-Encodings on proxied
requests
* uploads that encounter blocks will use 100% cpu as
detection of these flow control issue is not working
(we have not figured out to pry that from OpenSSL).
Closes #12734
This commit is contained in:
parent
f81a335e85
commit
0535f6ec71
15 changed files with 2698 additions and 16 deletions
|
|
@ -15,6 +15,8 @@ QUIC libraries we are using:
|
|||
|
||||
[quiche](https://github.com/cloudflare/quiche) - **EXPERIMENTAL**
|
||||
|
||||
[OpenSSL 3.2+ QUIC](https://github.com/openssl/openssl) - **EXPERIMENTAL**
|
||||
|
||||
[msh3](https://github.com/nibanks/msh3) (with [msquic](https://github.com/microsoft/msquic)) - **EXPERIMENTAL**
|
||||
|
||||
## Experimental
|
||||
|
|
@ -193,6 +195,40 @@ Build curl:
|
|||
|
||||
If `make install` results in `Permission denied` error, you will need to prepend it with `sudo`.
|
||||
|
||||
# OpenSSL version
|
||||
|
||||
quiche QUIC support is **EXPERIMENTAL**
|
||||
|
||||
Build OpenSSL 3.2.0
|
||||
|
||||
% cd ..
|
||||
% git clone -b openssl-3.2.0 https://github.com/openssl/openssl
|
||||
% cd openssl
|
||||
% ./config enable-tls1_3 --prefix=<somewhere> --libdir=<somewhere>/lib
|
||||
% make install
|
||||
|
||||
Build nghttp3
|
||||
|
||||
% cd ..
|
||||
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||
% cd nghttp3
|
||||
% autoreconf -fi
|
||||
% ./configure --prefix=<somewhere2> --enable-lib-only
|
||||
% make
|
||||
% make install
|
||||
|
||||
Build curl:
|
||||
|
||||
% cd ..
|
||||
% git clone https://github.com/curl/curl
|
||||
% cd curl
|
||||
% autoreconf -fi
|
||||
% ./configure --with-openssl=<somewhere> --with-openssl-quic --with-nghttp3=<somewhere2>
|
||||
% make
|
||||
% make install
|
||||
|
||||
If `make install` results in `Permission denied` error, you will need to prepend it with `sudo`.
|
||||
|
||||
# msh3 (msquic) version
|
||||
|
||||
**Note**: The msquic HTTP/3 backend is immature and is not properly functional
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue