Connect to the proxy URL and port if specified for stratum sockets instead of the pool directly.
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
diff --git a/util.c b/util.c
index 83aeb28..0b33715 100644
--- a/util.c
+++ b/util.c
@@ -1722,6 +1722,7 @@ bool auth_stratum(struct pool *pool)
static bool setup_stratum_socket(struct pool *pool)
{
struct addrinfo servinfobase, *servinfo, *hints, pbase, *p;
+ char *sockaddr_url, *sockaddr_port;
int sockd;
mutex_lock(&pool->stratum_lock);
@@ -1737,14 +1738,21 @@ static bool setup_stratum_socket(struct pool *pool)
hints->ai_socktype = SOCK_STREAM;
servinfo = &servinfobase;
p = &pbase;
- if (getaddrinfo(pool->sockaddr_url, pool->stratum_port, hints, &servinfo) != 0) {
+ if (pool->rpc_proxy) {
+ sockaddr_url = pool->sockaddr_proxy_url;
+ sockaddr_port = pool->sockaddr_proxy_port;
+ } else {
+ sockaddr_url = pool->sockaddr_url;
+ sockaddr_port = pool->stratum_port;
+ }
+ if (getaddrinfo(sockaddr_url, sockaddr_port, hints, &servinfo) != 0) {
if (!pool->probed) {
applog(LOG_WARNING, "Failed to resolve (?wrong URL) %s:%s",
- pool->sockaddr_url, pool->stratum_port);
+ sockaddr_url, sockaddr_port);
pool->probed = true;
} else {
applog(LOG_INFO, "Failed to getaddrinfo for %s:%s",
- pool->sockaddr_url, pool->stratum_port);
+ sockaddr_url, sockaddr_port);
}
return false;
}