aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2008-01-05 22:04:18 +0000
committerDaniel Stenberg <daniel@haxx.se>2008-01-05 22:04:18 +0000
commitb4305764367f24f06ce7dedc557d90772a00eec1 (patch)
treed723ad3a4b96f6d4bb810e5853de764f83da99da
parent65008a4e55db71cff22e3fca6b36f15eb642b92d (diff)
Based on further discussion on curl-library, I reverted yesterday's SOCKS5
code to instead introduce support for a new proxy type called CURLPROXY_SOCKS5_HOSTNAME that is used to send the host name to the proxy instead of IP address and there's thus no longer any need for a new curl_easy_setopt() option. The default SOCKS5 proxy is again back to sending the IP address to the proxy. The new curl command line option for enabling sending host name to a SOCKS5 proxy is now --socks5-hostname.
-rw-r--r--CHANGES11
-rw-r--r--RELEASE-NOTES5
-rw-r--r--docs/curl.110
-rw-r--r--docs/libcurl/curl_easy_setopt.39
-rw-r--r--include/curl/curl.h10
-rw-r--r--lib/socks.c2
-rw-r--r--lib/url.c8
-rw-r--r--lib/urldata.h3
-rw-r--r--src/main.c24
9 files changed, 35 insertions, 47 deletions
diff --git a/CHANGES b/CHANGES
index ae47a1e62..30d312a15 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,17 @@
Changelog
+Daniel S (5 Jan 2008)
+- Based on further discussion on curl-library, I reverted yesterday's SOCKS5
+ code to instead introduce support for a new proxy type called
+ CURLPROXY_SOCKS5_HOSTNAME that is used to send the host name to the proxy
+ instead of IP address and there's thus no longer any need for a new
+ curl_easy_setopt() option.
+
+ The default SOCKS5 proxy is again back to sending the IP address to the
+ proxy. The new curl command line option for enabling sending host name to a
+ SOCKS5 proxy is now --socks5-hostname.
+
Daniel S (4 Jan 2008)
- Based on Maxim Perenesenko's patch, we now do SOCKS5 operations and let the
proxy do the host name resolving and only if --socks5ip (or
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 03a3d5b11..0eb852074 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -2,7 +2,7 @@ Curl and libcurl 7.17.2
Public curl releases: 103
Command line options: 125
- curl_easy_setopt() options: 149
+ curl_easy_setopt() options: 148
Public functions in libcurl: 55
Public web site mirrors: 42
Known libcurl bindings: 36
@@ -15,7 +15,7 @@ This release includes the following changes:
o --no-keep-alive was added, since starting now curl is doing connections with
keep-alive enabled by default
o --socks4a added (proxy type CURLPROXY_SOCKS4A for libcurl)
- o --socks5ip added (CURLOPT_SOCKS5_RESOLVE_LOCAL for libcurl)
+ o --socks5-hostname added (CURLPROXY_SOCKS5_HOSTNAME for libcurl)
This release includes the following bugfixes:
@@ -44,7 +44,6 @@ This release includes the following bugfixes:
o bad connection re-use check with environment variable-activated proxy use
o --libcurl now generates a return statement as well
o socklen_t is no longer used in the public includes
- o SOCKS5 uses now let the proxy resolve the host names by default
This release includes the following known bugs:
diff --git a/docs/curl.1 b/docs/curl.1
index 731c945db..43d43500f 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -21,7 +21,7 @@
.\" * $Id$
.\" **************************************************************************
.\"
-.TH curl 1 "20 Nov 2007" "Curl 7.17.2" "Curl Manual"
+.TH curl 1 "5 Jan 2008" "Curl 7.17.2" "Curl Manual"
.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
@@ -1083,10 +1083,10 @@ This option overrides any previous use of \fI-x/--proxy\fP, as they are
mutually exclusive.
If this option is used several times, the last one will be used.
-.IP "--socks5 <host[:port]>"
+.IP "--socks5-hostname <host[:port]>"
Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
the port number is not specified, it is assumed at port 1080. (Added in
-7.11.1)
+7.17.2)
This option overrides any previous use of \fI-x/--proxy\fP, as they are
mutually exclusive.
@@ -1094,9 +1094,9 @@ mutually exclusive.
If this option is used several times, the last one will be used. (This option
was previously wrongly documented and used as --socks without the number
appended.)
-.IP "--socks5ip <host[:port]>"
+.IP "--socks5 <host[:port]>"
Use the specified SOCKS5 proxy - but resolve the host name locally. If the
-port number is not specified, it is assumed at port 1080. (Added in 7.17.2)
+port number is not specified, it is assumed at port 1080.
This option overrides any previous use of \fI-x/--proxy\fP, as they are
mutually exclusive.
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index 299ac3ebb..05289e9de 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -21,7 +21,7 @@
.\" * $Id$
.\" **************************************************************************
.\"
-.TH curl_easy_setopt 3 "4 Jan 2008" "libcurl 7.17.2" "libcurl Manual"
+.TH curl_easy_setopt 3 "5 Jan 2008" "libcurl 7.17.2" "libcurl Manual"
.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
@@ -431,10 +431,9 @@ specified in the proxy string \fICURLOPT_PROXY\fP.
.IP CURLOPT_PROXYTYPE
Pass a long with this option to set type of the proxy. Available options for
this are \fICURLPROXY_HTTP\fP, \fICURLPROXY_SOCKS4\fP (added in 7.15.2),
-\fICURLPROXY_SOCKS5\fP and \fICURLPROXY_SOCKS4A\fP (added in 7.17.2). The HTTP
-type is default. (Added in 7.10)
-
-See also \fIURLOPT_SOCKS5_RESOLVE_LOCAL\fP.
+\fICURLPROXY_SOCKS5\fP, \fICURLPROXY_SOCKS4A\fP (added in 7.17.2) and
+\fICURLPROXY_SOCKS5_HOSTNAME\fP (added in 7.17.2). The HTTP type is
+default. (Added in 7.10)
.IP CURLOPT_HTTPPROXYTUNNEL
Set the parameter to non-zero to get the library to tunnel all operations
through a given HTTP proxy. There is a big difference between using a proxy
diff --git a/include/curl/curl.h b/include/curl/curl.h
index c1288a7e9..189693137 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -499,7 +499,10 @@ typedef enum {
CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already
in 7.10 */
CURLPROXY_SOCKS5 = 5, /* added in 7.10 */
- CURLPROXY_SOCKS4A = 6 /* added in 7.17.2 */
+ CURLPROXY_SOCKS4A = 6, /* added in 7.17.2 */
+ CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the
+ host name rather than the IP address. added
+ in 7.17.2 */
} curl_proxytype; /* this enum was added in 7.10 */
#define CURLAUTH_NONE 0 /* nothing */
@@ -1172,11 +1175,6 @@ typedef enum {
/* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */
CINIT(PROXY_TRANSFER_MODE, LONG, 166),
- /* Set using of SOCKS5 to resolve host names locally instead of sending them
- to the proxy to let it resolve them. Valid only if CURLOPT_PROXYTYPE ==
- CURLPROXY_SOCKS5, otherwise ignored. */
- CINIT(SOCKS5_RESOLVE_LOCAL, LONG, 167),
-
CURLOPT_LASTENTRY /* the last unused */
} CURLoption;
diff --git a/lib/socks.c b/lib/socks.c
index 90ec1f215..693daffe3 100644
--- a/lib/socks.c
+++ b/lib/socks.c
@@ -390,7 +390,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
curl_socket_t sock = conn->sock[sockindex];
struct SessionHandle *data = conn->data;
long timeout;
- bool socks5_resolve_local = data->set.socks5_resolve_local;
+ bool socks5_resolve_local = data->set.proxytype == CURLPROXY_SOCKS5;
const size_t hostname_len = strlen(hostname);
int packetsize = 0;
diff --git a/lib/url.c b/lib/url.c
index 774e25ff2..550cb2113 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -2054,14 +2054,6 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
}
break;
- case CURLOPT_SOCKS5_RESOLVE_LOCAL:
- /*
- * Enable or disable using of SOCKS5 proxy server to resolve domain names
- * instead of using platform API like gethostbyname_r etc
- */
- data->set.socks5_resolve_local = (bool)(0 != va_arg(param, long));
- break;
-
default:
/* unknown tag and its companion, just ignore: */
result = CURLE_FAILED_INIT; /* correct this */
diff --git a/lib/urldata.h b/lib/urldata.h
index 2f061e035..5b5c014b4 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -1441,9 +1441,6 @@ struct UserDefined {
long new_directory_perms; /* Permissions to use when creating remote dirs */
bool proxy_transfer_mode; /* set transfer mode (;type=<a|i>) when doing FTP
via an HTTP proxy */
- bool socks5_resolve_local; /* resolve host names locally even if a SOCKS5
- proxy in use. Valid only if CURLOPT_PROXYTYPE
- == CURLPROXY_SOCKS5, otherwise ignored. */
char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */
};
diff --git a/src/main.c b/src/main.c
index 1f3ff706b..95046bca7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -480,8 +480,6 @@ struct Configurable {
bool raw;
bool post301;
bool nokeepalive;
- bool socks5_resolve_local; /* don't use SOCKS5 proxy server to resolve
- domain names */
struct OutStruct *outs;
};
@@ -713,10 +711,10 @@ static void help(void)
" --retry-max-time <seconds> Retry only within this period",
" -s/--silent Silent mode. Don't output anything",
" -S/--show-error Show error. With -s, make curl show errors when they occur",
- " --socks4 <host[:port]> Use SOCKS4 proxy on given host + port",
- " --socks4a <host[:port]> Use SOCKS4a proxy on given host + port",
- " --socks5 <host[:port]> Use SOCKS5 proxy and let the proxy resolve names",
- " --socks5ip <host[:port]> Use SOCKS5 proxy on given host + port",
+ " --socks4 <host[:port]> SOCKS4 proxy on given host + port",
+ " --socks4a <host[:port]> SOCKS4a proxy on given host + port",
+ " --socks5-hostname <host[:port]> SOCKS5 proxy, pass name instead of IP",
+ " --socks5 <host[:port]> SOCKS5 proxy on given host + port",
" --stderr <file> Where to redirect stderr. - means stdout",
" -t/--telnet-option <OPT=val> Set telnet option",
" --trace <file> Write a debug trace to the given file",
@@ -1906,11 +1904,10 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
free(config->ftpport);
config->ftpport = NULL;
break;
- case 'c': /* --socks5ip specifies a socks5 proxy to use, but resolves
+ case 'c': /* --socks5 specifies a socks5 proxy to use, and resolves
the name locally and passes on the resolved address */
GetStr(&config->socksproxy, nextarg);
config->socksver = CURLPROXY_SOCKS5;
- config->socks5_resolve_local = TRUE;
break;
case 't': /* --socks4 specifies a socks4 proxy to use */
GetStr(&config->socksproxy, nextarg);
@@ -1920,11 +1917,10 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
GetStr(&config->socksproxy, nextarg);
config->socksver = CURLPROXY_SOCKS4A;
break;
- case '2': /* --socks5 specifies a socks5 proxy and enables name resolving
- with the proxy */
+ case '2': /* --socks5-hostname specifies a socks5 proxy and enables name
+ resolving with the proxy */
GetStr(&config->socksproxy, nextarg);
- config->socksver = CURLPROXY_SOCKS5;
- config->socks5_resolve_local = FALSE;
+ config->socksver = CURLPROXY_SOCKS5_HOSTNAME;
break;
case 'd': /* --tcp-nodelay option */
config->tcp_nodelay ^= TRUE;
@@ -4511,10 +4507,6 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
if(config->socksproxy) {
my_setopt(curl, CURLOPT_PROXY, config->socksproxy);
my_setopt(curl, CURLOPT_PROXYTYPE, config->socksver);
- if(config->socksver==CURLPROXY_SOCKS5)
- /* added in 7.17.2 */
- my_setopt(curl, CURLOPT_SOCKS5_RESOLVE_LOCAL,
- config->socks5_resolve_local);
}
/* curl 7.13.0 */