Open jcamiel opened 3 months ago
Update reproduced with libcurl only with this code:
#include <curl/curl.h>
static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm) {
return CURLE_OK;
}
int main(int argc, char *argv[]) {
CURLcode ret;
CURL *hnd;
char *data = "";
hnd = curl_easy_init();
curl_easy_reset(hnd);
curl_easy_setopt(hnd, CURLOPT_URL, "https://google.com");
curl_easy_setopt(hnd, CURLOPT_TIMEOUT, 20L);
curl_easy_setopt(hnd, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(hnd, CURLOPT_NOBODY, 1L);
curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_3);
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
curl_easy_setopt(hnd, CURLOPT_SSL_CTX_DATA, data);
ret = curl_easy_perform(hnd);
curl_easy_cleanup(hnd);
return (int)ret;
}
https://github.com/jcamiel/curlhttp3/actions/runs/10113188862/job/27968973290
See mail on libcurl mailing list https://curl.se/mail/lib-2024-07/0035.html
On our CI, we have sporadic failure when doing a HEAD request to https://google.com on ArchLinux, for HTTP/3.
Hurl file:
curl command:
Testing many times the curl command, we can't reproduce it.
With a libcurl sample, we can't reproduce the timeout:
With Easy Rust interface, we can reproduce it:
With Rust bindings to libcurl, we can't reproduc it:
In my analysis, I've the impression that the Easy curl-rust wrapper do something additional that can trigger this defect.