Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Thursday, June 13, 2019
 
 

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

curl_easy_setopt options                            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 often 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 will make 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
       All network protocols

EXAMPLE
       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
       Always

RETURN VALUE
       Returns CURLE_OK


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | web/curl         |
       +---------------+------------------+
       |Stability      | Uncommitted      |
       +---------------+------------------+
SEE ALSO
       CURLOPT_PROXY(3), CURLOPT_PROXYTYPE(3), CURLOPT_PROXYPORT(3),



NOTES
       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source    was    downloaded    from    https://github.com/curl/curl/ar-
       chive/curl-7_64_0.zip

       Further information about this software can be found on the open source
       community website at http://curl.haxx.se/.



libcurl 7.37.0                    17 Jun 2014
                                                    CURLOPT_HTTPPROXYTUNNEL(3)