Commit ed903ddf31ee3c2def57ea81a1eedba98bda3197

Con Kolivas 2013-03-07T15:13:32

Clear just the socket buffer when we don't care what is left in a stratum socket.

diff --git a/util.c b/util.c
index 62a50da..dfbfc93 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;