Commit 2f89eef4b1eb23e6ac5b11ecd1e128eb6429d609

Con Kolivas 2013-04-06T11:21:55

Differentiate socket closed from socket error in recv_line.

diff --git a/util.c b/util.c
index 4428199..5665f80 100644
--- a/util.c
+++ b/util.c
@@ -1038,11 +1038,16 @@ char *recv_line(struct pool *pool)
 		mutex_lock(&pool->stratum_lock);
 		do {
 			char s[RBUFSIZE];
-			size_t slen, n;
+			size_t slen;
+			ssize_t n;
 
 			memset(s, 0, RBUFSIZE);
 			n = recv(pool->sock, s, RECVSIZE, 0);
-			if (n < 1 && errno != EAGAIN && errno != EWOULDBLOCK) {
+			if (!n) {
+				applog(LOG_DEBUG, "Socket closed waiting in recv_line");
+				break;
+			}
+			if (n < 0 && errno != EAGAIN && errno != EWOULDBLOCK) {
 				applog(LOG_DEBUG, "Failed to recv sock in recv_line");
 				break;
 			}