GNURLOPT_SUPPRESS_CONNECT_HEADERS(3)

πŸ“¦ version 7.72.0, in nixos 26.05, nixpkgs unstable

πŸŽ€ GNURLOPT_SUPPRESS_CONNECT_HEADERS(3) πŸŽ€

okay bestie, this page is from the curl_easy_setopt options manual πŸ’… and it's literally about making proxy CONNECT headers stop crashing the callback party.

πŸ’– NAME πŸ’–

  • CURLOPT_SUPPRESS_CONNECT_HEADERS β€” suppresses proxy CONNECT response headers from your user callbacks, periodt ✨

πŸ¦‹ SYNOPSIS πŸ¦‹

#include <gnurl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SUPPRESS_CONNECT_HEADERS, long onoff);

🌸 DESCRIPTION 🌸

So here's the tea πŸ«–: when CURLOPT_HTTPPROXYTUNNEL(3) is used and a CONNECT request is made, this option suppresses the proxy CONNECT response headers from the user callback functions CURLOPT_HEADERFUNCTION(3) and CURLOPT_WRITEFUNCTION(3). πŸ’…

Why? Because proxy CONNECT response headers can make header processing complicated β€” it's essentially a separate set of headers. You can enable this option to suppress those headers. Iconic, honestly. πŸ‘‘

For example, let's assume an HTTPS URL is to be retrieved via CONNECT. On success there would normally be two sets of headers, and each header line sent to the header function and/or the write function. The data given to the callbacks would look like this:

HTTP/1.1 200 Connection established
{headers}...

HTTP/1.1 200 OK
Content-Type: application/json
{headers}...

{body}...

However, by enabling this option the CONNECT response headers are suppressed, so the data given to the callbacks would look like this:

HTTP/1.1 200 OK
Content-Type: application/json
{headers}...

{body}...

🍼 DEFAULT 🍼

0 β€” that's the default, bestie πŸŽ€

🌈 PROTOCOLS 🌈

All β€” every protocol, slay πŸ’…

πŸ”₯ EXAMPLE πŸ”₯

CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");

  curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
  curl_easy_setopt(curl, CURLOPT_PROXY, "http://foo:3128");
  curl_easy_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L);
  curl_easy_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS, 1L);

  curl_easy_perform(curl);

  /* always cleanup */
  curl_easy_cleanup(curl);
}

⭐ AVAILABILITY ⭐

Added in 7.54.0 πŸŽ€

πŸ‘‘ RETURN VALUE πŸ‘‘

Returns CURLE_OK, or an error such as CURLE_UNKNOWN_OPTION. 😭

πŸ¦‹ SEE ALSO πŸ¦‹


mwah πŸ’‹ β€” this cutie comes from libcurl 7.54.0, dated 13 February 2017, and lives in the GNURLOPT_SUPPRESS_CONNECT_HEADERS(3) manual. byeee 🫢✨

πŸ“¦ where this page comes from