diff --git a/util.c b/util.c index 62a50dae..dfbfc93b 100644 --- a/util.c +++ b/util.c @@ -981,16 +981,22 @@ bool sock_full(struct pool *pool) return (socket_full(pool, false)); } +static void clear_sockbuf(struct pool *pool) +{ + strcpy(pool->sockbuf, ""); +} + static void clear_sock(struct pool *pool) { ssize_t n; mutex_lock(&pool->stratum_lock); - do + do { n = recv(pool->sock, pool->sockbuf, RECVSIZE, 0); - while (n > 0); + } while (n > 0); mutex_unlock(&pool->stratum_lock); - strcpy(pool->sockbuf, ""); + + clear_sockbuf(pool); } /* Make sure the pool sockbuf is large enough to cope with any coinbase size @@ -1506,7 +1512,7 @@ out: void suspend_stratum(struct pool *pool) { - clear_sock(pool); + clear_sockbuf(pool); applog(LOG_INFO, "Closing socket for stratum pool %d", pool->pool_no); mutex_lock(&pool->stratum_lock); pool->stratum_active = pool->stratum_notify = false;