mirror of
https://github.com/curl/curl.git
synced 2026-08-26 23:04:24 +03:00
http: fix unix domain socket use in https connects
- when h2/h3 eyeballing was involved, unix domain socket configurations were not honoured - configuring --unix-socket will disable HTTP/3 as candidate for eyeballing - combinatino of --unix-socket and --http3-only will fail during initialisation - adding pytest test_11 to reproduce Reported-by: Jelle van der Waa Fixes #10633 Closes #10641
This commit is contained in:
parent
c9c3ec482b
commit
a4d015e69f
4 changed files with 138 additions and 7 deletions
|
|
@ -266,7 +266,8 @@ static CURLcode cf_hc_connect(struct Curl_cfilter *cf,
|
|||
Curl_expire(data, ctx->soft_eyeballs_timeout_ms, EXPIRE_ALPN_EYEBALLS);
|
||||
}
|
||||
else if(ctx->h21_baller.enabled)
|
||||
cf_hc_baller_init(&ctx->h21_baller, cf, data, "h21", TRNSPRT_TCP);
|
||||
cf_hc_baller_init(&ctx->h21_baller, cf, data, "h21",
|
||||
cf->conn->transport);
|
||||
ctx->state = CF_HC_CONNECT;
|
||||
/* FALLTHROUGH */
|
||||
|
||||
|
|
@ -280,7 +281,8 @@ static CURLcode cf_hc_connect(struct Curl_cfilter *cf,
|
|||
}
|
||||
|
||||
if(time_to_start_h21(cf, data, now)) {
|
||||
cf_hc_baller_init(&ctx->h21_baller, cf, data, "h21", TRNSPRT_TCP);
|
||||
cf_hc_baller_init(&ctx->h21_baller, cf, data, "h21",
|
||||
cf->conn->transport);
|
||||
}
|
||||
|
||||
if(cf_hc_baller_is_active(&ctx->h21_baller)) {
|
||||
|
|
|
|||
|
|
@ -236,14 +236,10 @@ static CURLcode http_setup_conn(struct Curl_easy *data,
|
|||
data->req.p.http = http;
|
||||
connkeep(conn, "HTTP default");
|
||||
|
||||
if((data->state.httpwant == CURL_HTTP_VERSION_3)
|
||||
|| (data->state.httpwant == CURL_HTTP_VERSION_3ONLY)) {
|
||||
if(data->state.httpwant == CURL_HTTP_VERSION_3ONLY) {
|
||||
CURLcode result = Curl_conn_may_http3(data, conn);
|
||||
if(result)
|
||||
return result;
|
||||
|
||||
/* TODO: HTTP lower version eyeballing */
|
||||
conn->transport = TRNSPRT_QUIC;
|
||||
}
|
||||
|
||||
return CURLE_OK;
|
||||
|
|
|
|||
|
|
@ -364,6 +364,10 @@ bool Curl_conn_is_http3(const struct Curl_easy *data,
|
|||
CURLcode Curl_conn_may_http3(struct Curl_easy *data,
|
||||
const struct connectdata *conn)
|
||||
{
|
||||
if(conn->transport == TRNSPRT_UNIX) {
|
||||
/* cannot do QUIC over a unix domain socket */
|
||||
return CURLE_QUIC_CONNECT_ERROR;
|
||||
}
|
||||
if(!(conn->handler->flags & PROTOPT_SSL)) {
|
||||
failf(data, "HTTP/3 requested for non-HTTPS URL");
|
||||
return CURLE_URL_MALFORMAT;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue