From ed903ddf31ee3c2def57ea81a1eedba98bda3197 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Thu, 7 Mar 2013 15:13:32 +1100 Subject: [PATCH] Clear just the socket buffer when we don't care what is left in a stratum socket. --- util.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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;