Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CURLOPT_HTTPPROXYTUNNEL(3) Library Functions Manual CURLOPT_HTTPPROXYTUNNEL(3)

NAME
       CURLOPT_HTTPPROXYTUNNEL - tunnel	through	HTTP proxy

SYNOPSIS
       #include	<curl/curl.h>

       CURLcode	curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL,	long tunnel);

DESCRIPTION
       Set  the	 tunnel	 parameter to 1L to make libcurl tunnel	all operations
       through the HTTP	proxy (set with	CURLOPT_PROXY(3)). There is a big dif-
       ference between using a proxy and to tunnel through it.

       Tunneling means that an HTTP CONNECT request is sent to the proxy, ask-
       ing it to connect to a remote host on a specific	port number  and  then
       the  traffic  is	 just  passed  through	the  proxy.  Proxies  tend  to
       white-list specific port	numbers	it allows CONNECT requests to and  of-
       ten only	port 80	and 443	are allowed.

       To suppress proxy CONNECT response headers from user callbacks use CUR-
       LOPT_SUPPRESS_CONNECT_HEADERS(3).

       HTTP proxies can	generally only speak HTTP (for obvious reasons), which
       makes  libcurl  convert	non-HTTP  requests  to HTTP when using an HTTP
       proxy without this tunnel option	set. For example, asking  for  an  FTP
       URL  and	 specifying  an	HTTP proxy makes libcurl send an FTP URL in an
       HTTP GET	request	to the proxy. By instead tunneling through the	proxy,
       you avoid that conversion (that rarely works through the	proxy anyway).

DEFAULT
       0

PROTOCOLS
       This functionality affects all supported	protocols

EXAMPLE
       int main(void)
       {
	 CURL *curl = curl_easy_init();
	 if(curl) {
	   curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt");
	   curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1:80");
	   curl_easy_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L);
	   curl_easy_perform(curl);
	 }
       }

AVAILABILITY
       Added in	curl 7.3

RETURN VALUE
       curl_easy_setopt(3) returns a CURLcode indicating success or error.

       CURLE_OK	(0) means everything was OK, non-zero means an error occurred,
       see libcurl-errors(3).

SEE ALSO
       CURLOPT_PROXY(3), CURLOPT_PROXYPORT(3), CURLOPT_PROXYTYPE(3)

libcurl				  2025-06-03	    CURLOPT_HTTPPROXYTUNNEL(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=CURLOPT_HTTPPROXYTUNNEL&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help