|
|
@ -3964,18 +3964,17 @@ out_unlock: |
|
|
|
static void *stratum_thread(void *userdata) |
|
|
|
static void *stratum_thread(void *userdata) |
|
|
|
{ |
|
|
|
{ |
|
|
|
struct pool *pool = (struct pool *)userdata; |
|
|
|
struct pool *pool = (struct pool *)userdata; |
|
|
|
SOCKETTYPE sock = pool->sock; |
|
|
|
|
|
|
|
fd_set rd; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pthread_detach(pthread_self()); |
|
|
|
pthread_detach(pthread_self()); |
|
|
|
|
|
|
|
|
|
|
|
FD_ZERO(&rd); |
|
|
|
|
|
|
|
FD_SET(sock, &rd); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (42) { |
|
|
|
while (42) { |
|
|
|
|
|
|
|
fd_set rd; |
|
|
|
char *s; |
|
|
|
char *s; |
|
|
|
|
|
|
|
|
|
|
|
if (select(sock + 1, &rd, NULL, NULL, NULL) < 0) { |
|
|
|
FD_ZERO(&rd); |
|
|
|
|
|
|
|
FD_SET(pool->sock, &rd); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (select(pool->sock + 1, &rd, NULL, NULL, NULL) < 0) { |
|
|
|
pool->stratum_active = pool->stratum_auth = false; |
|
|
|
pool->stratum_active = pool->stratum_auth = false; |
|
|
|
applog(LOG_WARNING, "Stratum connection to pool %d interrupted", pool->pool_no); |
|
|
|
applog(LOG_WARNING, "Stratum connection to pool %d interrupted", pool->pool_no); |
|
|
|
pool->getfail_occasions++; |
|
|
|
pool->getfail_occasions++; |
|
|
@ -3984,7 +3983,7 @@ static void *stratum_thread(void *userdata) |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
s = recv_line(sock); |
|
|
|
s = recv_line(pool->sock); |
|
|
|
if (unlikely(!s)) |
|
|
|
if (unlikely(!s)) |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
if (!parse_stratum(pool, s)) /* Create message queues here */ |
|
|
|
if (!parse_stratum(pool, s)) /* Create message queues here */ |
|
|
|