GNURLOPT_HTTP_VERSION(3)
π GNURLOPT_HTTP_VERSION(3) π
okay bestie, this page is from the curl_easy_setopt options manual, and it's literally all about telling libcurl which HTTP version to use. no cap, every flag matters, so let's go π
β¨ NAME β¨
CURLOPT_HTTP_VERSION β specify HTTP protocol version to use
π SYNOPSIS π
#include <gnurl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long
version);
π¦ DESCRIPTION π¦
Okay so you pass version as a long, set to one of the values below. These ask libcurl to use the specific HTTP versions. vibe check: the HTTP version is just a request. libcurl will still prioritize re-using an existing connection, so it might then re-use a connection using a HTTP version you haven't asked for. iykyk π
CURL_HTTP_VERSION_NONEβ we don't care about what version the library uses. libcurl will use whatever it thinks fit. main character energy, honestly β¨CURL_HTTP_VERSION_1_0β enforce HTTP 1.0 requests. periodt.CURL_HTTP_VERSION_1_1β enforce HTTP 1.1 requests. iconic behavior πCURL_HTTP_VERSION_2_0β attempt HTTP 2 requests. libcurl will fall back to HTTP 1.1 if HTTP 2 can't be negotiated with the server. (Added in7.33.0) The aliasCURL_HTTP_VERSION_2was added in7.43.0to better reflect the actual protocol name. slay π¦CURL_HTTP_VERSION_2TLSβ attempt HTTP 2 over TLS (HTTPS) only. libcurl will fall back to HTTP 1.1 if HTTP 2 can't be negotiated with the HTTPS server. For clear text HTTP servers, libcurl will use1.1. (Added in7.47.0) secure little moment πCURL_HTTP_VERSION_2_PRIOR_KNOWLEDGEβ issue non-TLS HTTP requests using HTTP/2 without HTTP/1.1 Upgrade. It requires prior knowledge that the server supports HTTP/2 straight away. HTTPS requests will still do HTTP/2 the standard way with negotiated protocol version in the TLS handshake. (Added in7.49.0) confident queen behavior πCURL_HTTP_VERSION_3β (Added in7.66.0) setting this value will make libcurl attempt to use HTTP/3 directly to server given in the URL. Note that this cannot gracefully downgrade to earlier HTTP version if the server doesn't support HTTP/3. For more reliably upgrading to HTTP/3, set the preferred version to something lower and let the server announce its HTTP/3 support viaAlt-Svc:. SeeCURLOPT_ALTSVC(3). future vibes π
πΈ DEFAULT πΈ
Since curl 7.62.0: CURL_HTTP_VERSION_2TLS
Before that: CURL_HTTP_VERSION_1_1
β PROTOCOLS β
HTTP
π EXAMPLE π
CURL *curl = curl_easy_init();
if(curl) {
CURLcode ret;
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
ret = curl_easy_perform(curl);
if(ret == CURLE_HTTP_RETURNED_ERROR) {
/* an HTTP response error problem */
}
}
π§ AVAILABILITY π§
Along with HTTP. it's giving matching-set energy β¨
π RETURN VALUE π
Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. that's the whole return vibe, bestie π«Ά
π₯ SEE ALSO π₯
okay that's the page, bestie β from libcurl 7.37.0, dated 17 Jun 2014, and this is GNURLOPT_HTTP_VERSION(3) signing off π
β¨π«Ά
π¦ where this page comes from
- nixos 26.05: libgnurl 7.72.0
- nixpkgs unstable: libgnurl 7.72.0
- Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms