Browse Source

Differentiate socket closed from socket error in recv_line.

Con Kolivas 13 years ago
parent
commit
7884e90449
1 changed files with 7 additions and 2 deletions
  1. 7 2
      util.c

+ 7 - 2
util.c

@@ -1256,11 +1256,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;
 			}