]> granicus.if.org Git - curl/commitdiff
socks proxy: allow socks5h:// prefix too
authorDaniel Stenberg <daniel@haxx.se>
Thu, 5 May 2011 09:47:55 +0000 (11:47 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 5 May 2011 09:47:55 +0000 (11:47 +0200)
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.

docs/libcurl/curl_easy_setopt.3
lib/url.c

index 55b0db5baf1f0df839326758b7687bff1a0c98ca..2494ecc1506bcb3f43846ff954dc5b98eeafc41d 100644 (file)
@@ -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.
index edbb164295dcae03cd5105d4c2785517b9ed624d..22f8b3391459da6834e2b606b5cab4c29b5e5630 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -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;