mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 05:09:12 +00:00
Meta+RequestServer: Enable HTTP/3 for curl
This adds an overlay port for curl that adds the features required for HTTP/3. This is not quite compatible with the upstream vcpkg.json, because enabling HTTP/2 makes it use the default SSL backend, which is sectransp for macOS and schannel on Windows. These backends are not compatible with ngtcp2. Additionally, we can not build curl with multiple SSL backends when using ngtcp2. I couldn't find a way to selectively disable/enable dependencies based on what features are enabled, so I made HTTP/2 pick OpenSSL in our overlay port. Upstream vcpkg will likely want to support wolfSSL and GnuTLS backends for ngtcp2, so they'll be additional work to get this into upstream.
This commit is contained in:
parent
993d8df29b
commit
08a03534af
Notes:
github-actions[bot]
2025-07-09 20:46:16 +00:00
Author: https://github.com/Lubrsi
Commit: 08a03534af
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5339
Reviewed-by: https://github.com/ADKaster ✅
Reviewed-by: https://github.com/alimpfard ✅
5 changed files with 30 additions and 2 deletions
|
@ -13,6 +13,7 @@
|
|||
#include <LibCore/EventLoop.h>
|
||||
#include <LibCore/Proxy.h>
|
||||
#include <LibCore/Socket.h>
|
||||
#include <LibCore/StandardPaths.h>
|
||||
#include <LibRequests/NetworkError.h>
|
||||
#include <LibRequests/RequestTimingInfo.h>
|
||||
#include <LibRequests/WebSocket.h>
|
||||
|
@ -315,6 +316,8 @@ ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<IPC::Transport> transpo
|
|||
{
|
||||
s_connections.set(client_id(), *this);
|
||||
|
||||
m_alt_svc_cache_path = ByteString::formatted("{}/Ladybird/alt-svc-cache.txt", Core::StandardPaths::user_data_directory());
|
||||
|
||||
m_curl_multi = curl_multi_init();
|
||||
|
||||
auto set_option = [this](auto option, auto value) {
|
||||
|
@ -488,6 +491,7 @@ void ConnectionFromClient::start_request(i32 request_id, ByteString method, URL:
|
|||
set_option(CURLOPT_PORT, url.port_or_default());
|
||||
set_option(CURLOPT_CONNECTTIMEOUT, s_connect_timeout_seconds);
|
||||
set_option(CURLOPT_PIPEWAIT, 1L);
|
||||
set_option(CURLOPT_ALTSVC, m_alt_svc_cache_path.characters());
|
||||
|
||||
bool did_set_body = false;
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ private:
|
|||
HashMap<int, NonnullRefPtr<Core::Notifier>> m_read_notifiers;
|
||||
HashMap<int, NonnullRefPtr<Core::Notifier>> m_write_notifiers;
|
||||
NonnullRefPtr<Resolver> m_resolver;
|
||||
ByteString m_alt_svc_cache_path;
|
||||
};
|
||||
|
||||
// FIXME: Find a good home for this
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue