Use the --socks-proxy option with stratum, changing it to defaulting to socks5 and give appropriate message should it fail to connect.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
diff --git a/README b/README
index 51e22cd..c0d35b3 100644
--- a/README
+++ b/README
@@ -185,7 +185,7 @@ Options for both config file and command line:
--scrypt Use the scrypt algorithm for mining (litecoin only)
--sharelog <arg> Append share log to file
--shares <arg> Quit after mining N shares (default: unlimited)
---socks-proxy <arg> Set socks4 proxy (host:port) for all pools without a proxy specified
+--socks-proxy <arg> Set socks proxy (host:port) for all pools without a proxy specified
--syslog Use system log for output messages (default: standard error)
--temp-cutoff <arg> Temperature where a device will be automatically disabled, one value or comma separated list (default: 95)
--text-only|-T Disable ncurses formatted screen output
diff --git a/cgminer.c b/cgminer.c
index 9661915..892c6cf 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -1249,7 +1249,7 @@ static struct opt_table opt_config_table[] = {
"Quit after mining N shares (default: unlimited)"),
OPT_WITH_ARG("--socks-proxy",
opt_set_charp, NULL, &opt_socks_proxy,
- "Set socks4 proxy (host:port)"),
+ "Set socks proxy (host:port)"),
#ifdef HAVE_SYSLOG_H
OPT_WITHOUT_ARG("--syslog",
opt_set_bool, &use_syslog,
diff --git a/util.c b/util.c
index 82de573..550f4ed 100644
--- a/util.c
+++ b/util.c
@@ -347,7 +347,7 @@ json_t *json_rpc_call(CURL *curl, const char *url,
curl_easy_setopt(curl, CURLOPT_PROXYTYPE, pool->rpc_proxytype);
} else if (opt_socks_proxy) {
curl_easy_setopt(curl, CURLOPT_PROXY, opt_socks_proxy);
- curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+ curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
}
if (userpass) {
curl_easy_setopt(curl, CURLOPT_USERPWD, userpass);
@@ -1870,6 +1870,12 @@ static bool setup_stratum_socket(struct pool *pool)
hints->ai_socktype = SOCK_STREAM;
servinfo = &servinfobase;
p = &pbase;
+ if (!pool->rpc_proxy && opt_socks_proxy) {
+ pool->rpc_proxy = opt_socks_proxy;
+ extract_sockaddr(pool->rpc_proxy, &pool->sockaddr_proxy_url, &pool->sockaddr_proxy_port);
+ pool->rpc_proxytype = CURLPROXY_SOCKS5;
+ }
+
if (pool->rpc_proxy) {
sockaddr_url = pool->sockaddr_proxy_url;
sockaddr_port = pool->sockaddr_proxy_port;
@@ -1905,8 +1911,8 @@ static bool setup_stratum_socket(struct pool *pool)
break;
}
if (p == NULL) {
- applog(LOG_INFO, "Failed to find a stratum servinfo on %s:%s",
- pool->sockaddr_url, pool->stratum_port);
+ applog(LOG_NOTICE, "Failed to connect to stratum on %s:%s",
+ sockaddr_url, sockaddr_port);
freeaddrinfo(servinfo);
return false;
}