Commit 558f997e authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

socks proxy: allow socks5h:// prefix too

Using 'socks5h' as proxy protocol will make it a
CURLPROXY_SOCKS5_HOSTNAME proxy which is SOCKS5 and asking the proxy to
resolve host names. I found no "standard" protocol name for this.
parent fda0985b
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -634,9 +634,11 @@ specified the exact same way as the proxy can be set with \fICURLOPT_PROXY\fP,
include protocol prefix (http://) and embedded user + password.

Since 7.21.7, the proxy string may be specified with a protocol:// prefix to
specify alternative proxy protocols. Use socks4://, socks4a:// or socks5:// to
request the specific SOCKS version to be used. No protocol specified, http://
and all others will be treated as HTTP proxies.
specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or
socks5h:// (the last one to enable socks5 and asking the proxy to do the
resolving, also known as CURLPROXY_SOCKS5_HOSTNAME type) to request the
specific SOCKS version to be used. No protocol specified, http:// and all
others will be treated as HTTP proxies.
.IP CURLOPT_PROXYPORT
Pass a long with this option to set the proxy port to connect to unless it is
specified in the proxy string \fICURLOPT_PROXY\fP.
+3 −1
Original line number Diff line number Diff line
@@ -4069,7 +4069,9 @@ static CURLcode parse_proxy(struct SessionHandle *data,
  endofprot = strstr(proxy, "://");
  if(endofprot) {
    proxyptr = endofprot+3;
    if(checkprefix("socks5", proxy))
    if(checkprefix("socks5h", proxy))
      conn->proxytype = CURLPROXY_SOCKS5_HOSTNAME;
    else if(checkprefix("socks5", proxy))
      conn->proxytype = CURLPROXY_SOCKS5;
    else if(checkprefix("socks4a", proxy))
      conn->proxytype = CURLPROXY_SOCKS4A;