Make extract_sockaddr set variables passed to it rather than pool struct members.
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 64 65 66 67 68 69 70 71 72 73 74 75
diff --git a/cgminer.c b/cgminer.c
index 3b9e3ba..9661915 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -684,7 +684,7 @@ static char *set_rr(enum pool_strategy *strategy)
* stratum+tcp or by detecting a stratum server response */
bool detect_stratum(struct pool *pool, char *url)
{
- if (!extract_sockaddr(pool, url))
+ if (!extract_sockaddr(url, &pool->sockaddr_url, &pool->stratum_port))
return false;
if (!strncasecmp(url, "stratum+tcp://", 14)) {
@@ -5329,7 +5329,7 @@ static void *longpoll_thread(void *userdata);
static bool stratum_works(struct pool *pool)
{
applog(LOG_INFO, "Testing pool %d stratum %s", pool->pool_no, pool->stratum_url);
- if (!extract_sockaddr(pool, pool->stratum_url))
+ if (!extract_sockaddr(pool->stratum_url, &pool->sockaddr_url, &pool->stratum_port))
return false;
if (!initiate_stratum(pool))
diff --git a/util.c b/util.c
index 5060720..ca72d80 100644
--- a/util.c
+++ b/util.c
@@ -1072,13 +1072,13 @@ double tdiff(struct timeval *end, struct timeval *start)
return end->tv_sec - start->tv_sec + (end->tv_usec - start->tv_usec) / 1000000.0;
}
-bool extract_sockaddr(struct pool *pool, char *url)
+bool extract_sockaddr(char *url, char **sockaddr_url, char **sockaddr_port)
{
char *url_begin, *url_end, *ipv6_begin, *ipv6_end, *port_start = NULL;
char url_address[256], port[6];
int url_len, port_len = 0;
- pool->sockaddr_url = url;
+ *sockaddr_url = url;
url_begin = strstr(url, "//");
if (!url_begin)
url_begin = url;
@@ -1111,8 +1111,8 @@ bool extract_sockaddr(struct pool *pool, char *url)
else
strcpy(port, "80");
- pool->stratum_port = strdup(port);
- pool->sockaddr_url = strdup(url_address);
+ *sockaddr_port = strdup(port);
+ *sockaddr_url = strdup(url_address);
return true;
}
@@ -1557,7 +1557,7 @@ static bool parse_reconnect(struct pool *pool, json_t *val)
sprintf(address, "%s:%s", url, port);
- if (!extract_sockaddr(pool, address))
+ if (!extract_sockaddr(address, &pool->sockaddr_url, &pool->stratum_port))
return false;
pool->stratum_url = pool->sockaddr_url;
diff --git a/util.h b/util.h
index f083f20..8c86429 100644
--- a/util.h
+++ b/util.h
@@ -97,7 +97,7 @@ bool stratum_send(struct pool *pool, char *s, ssize_t len);
bool sock_full(struct pool *pool);
char *recv_line(struct pool *pool);
bool parse_method(struct pool *pool, char *s);
-bool extract_sockaddr(struct pool *pool, char *url);
+bool extract_sockaddr(char *url, char **sockaddr_url, char **sockaddr_port);
bool auth_stratum(struct pool *pool);
bool initiate_stratum(struct pool *pool);
bool restart_stratum(struct pool *pool);