Browse Source

Merge commit '6560878' into cg_merges_20130619a

Luke Dashjr 12 years ago
parent
commit
66b4e48e52
1 changed files with 9 additions and 2 deletions
  1. 9 2
      util.c

+ 9 - 2
util.c

@@ -1270,9 +1270,11 @@ bool stratum_send(struct pool *pool, char *s, ssize_t len)
 			break;
 		case SEND_SELECTFAIL:
 			applog(LOG_DEBUG, "Write select failed on pool %d sock", pool->pool_no);
+			suspend_stratum(pool);
 			break;
 		case SEND_SENDFAIL:
-			applog(LOG_DEBUG, "Failed to curl_easy_send in stratum_send");
+			applog(LOG_DEBUG, "Failed to send in stratum_send");
+			suspend_stratum(pool);
 			break;
 		case SEND_INACTIVE:
 			applog(LOG_DEBUG, "Stratum send failed due to no pool stratum_active");
@@ -1319,7 +1321,10 @@ static void clear_sock(struct pool *pool)
 
 	mutex_lock(&pool->stratum_lock);
 	do {
-		n = recv(pool->sock, pool->sockbuf, RECVSIZE, 0);
+		if (pool->sock)
+			n = recv(pool->sock, pool->sockbuf, RECVSIZE, 0);
+		else
+			n = 0;
 	} while (n > 0);
 	mutex_unlock(&pool->stratum_lock);
 
@@ -1372,11 +1377,13 @@ char *recv_line(struct pool *pool)
 			n = recv(pool->sock, s, RECVSIZE, 0);
 			if (!n) {
 				applog(LOG_DEBUG, "Socket closed waiting in recv_line");
+				suspend_stratum(pool);
 				break;
 			}
 			if (n < 0) {
 				if (!sock_blocks() || !socket_full(pool, false)) {
 					applog(LOG_DEBUG, "Failed to recv sock in recv_line");
+					suspend_stratum(pool);
 					break;
 				}
 			} else {