mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-10 14:58:01 +00:00
Suspend stratum connections when we know they've failed and don't try to recv data from them once the socket no longer exists.
This commit is contained in:
parent
362687f6bc
commit
6560878e03
11
util.c
11
util.c
@ -1012,9 +1012,11 @@ bool stratum_send(struct pool *pool, char *s, ssize_t len)
|
||||
break;
|
||||
case SEND_SELECTFAIL:
|
||||
applog(LOG_DEBUG, "Write select failed on pool %d sock", pool->pool_no);
|
||||
suspend_stratum(pool);
|
||||
break;
|
||||
case SEND_SENDFAIL:
|
||||
applog(LOG_DEBUG, "Failed to curl_easy_send in stratum_send");
|
||||
applog(LOG_DEBUG, "Failed to send in stratum_send");
|
||||
suspend_stratum(pool);
|
||||
break;
|
||||
case SEND_INACTIVE:
|
||||
applog(LOG_DEBUG, "Stratum send failed due to no pool stratum_active");
|
||||
@ -1061,7 +1063,10 @@ static void clear_sock(struct pool *pool)
|
||||
|
||||
mutex_lock(&pool->stratum_lock);
|
||||
do {
|
||||
n = recv(pool->sock, pool->sockbuf, RECVSIZE, 0);
|
||||
if (pool->sock)
|
||||
n = recv(pool->sock, pool->sockbuf, RECVSIZE, 0);
|
||||
else
|
||||
n = 0;
|
||||
} while (n > 0);
|
||||
mutex_unlock(&pool->stratum_lock);
|
||||
|
||||
@ -1114,11 +1119,13 @@ char *recv_line(struct pool *pool)
|
||||
n = recv(pool->sock, s, RECVSIZE, 0);
|
||||
if (!n) {
|
||||
applog(LOG_DEBUG, "Socket closed waiting in recv_line");
|
||||
suspend_stratum(pool);
|
||||
break;
|
||||
}
|
||||
if (n < 0) {
|
||||
if (!sock_blocks() || !socket_full(pool, false)) {
|
||||
applog(LOG_DEBUG, "Failed to recv sock in recv_line");
|
||||
suspend_stratum(pool);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user