diff options
author | Marc Hoersken <info@marc-hoersken.de> | 2012-09-10 12:46:25 +0200 |
---|---|---|
committer | Marc Hoersken <info@marc-hoersken.de> | 2012-09-14 00:14:46 +0200 |
commit | f73a27cadc55f97704a9d52ff4c67afda5d89162 (patch) | |
tree | b04ca5da3031ad9ffd2bcb47f9e39f37cc862a9c /lib | |
parent | f332f141021e027d603d2adf62cebaedd469575f (diff) |
socks.c: Updated error messages to handle hostname and IPv6
Diffstat (limited to 'lib')
-rw-r--r-- | lib/socks.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/socks.c b/lib/socks.c index e55964a4c..e3a53c6f4 100644 --- a/lib/socks.c +++ b/lib/socks.c @@ -659,13 +659,37 @@ CURLcode Curl_SOCKS5(const char *proxy_name, return CURLE_COULDNT_CONNECT; } if(socksreq[1] != 0) { /* Anything besides 0 is an error */ + if(socksreq[3] == 1) { failf(data, "Can't complete SOCKS5 connection to %d.%d.%d.%d:%d. (%d)", (unsigned char)socksreq[4], (unsigned char)socksreq[5], (unsigned char)socksreq[6], (unsigned char)socksreq[7], ((socksreq[8] << 8) | socksreq[9]), socksreq[1]); - return CURLE_COULDNT_CONNECT; + } + else if(socksreq[3] == 3) { + failf(data, + "Can't complete SOCKS5 connection to %s:%d. (%d)", + hostname, + ((socksreq[8] << 8) | socksreq[9]), + socksreq[1]); + } + else if(socksreq[3] == 4) { + failf(data, + "Can't complete SOCKS5 connection to %02x%02x:%02x%02x:" + "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%d. (%d)", + (unsigned char)socksreq[4], (unsigned char)socksreq[5], + (unsigned char)socksreq[6], (unsigned char)socksreq[7], + (unsigned char)socksreq[8], (unsigned char)socksreq[9], + (unsigned char)socksreq[10], (unsigned char)socksreq[11], + (unsigned char)socksreq[12], (unsigned char)socksreq[13], + (unsigned char)socksreq[14], (unsigned char)socksreq[15], + (unsigned char)socksreq[16], (unsigned char)socksreq[17], + (unsigned char)socksreq[18], (unsigned char)socksreq[19], + ((socksreq[8] << 8) | socksreq[9]), + socksreq[1]); + } + return CURLE_COULDNT_CONNECT; } /* Fix: in general, returned BND.ADDR is variable length parameter by RFC |