Browse Source

Use sock_blocks function for stratum send and receive.

Con Kolivas 12 years ago
parent
commit
af60a19ddd
1 changed files with 10 additions and 7 deletions
  1. 10 7
      util.c

+ 10 - 7
util.c

@@ -963,7 +963,7 @@ static enum send_ret __stratum_send(struct pool *pool, char *s, ssize_t len)
 			return SEND_SELECTFAIL;
 			return SEND_SELECTFAIL;
 		sent = send(pool->sock, s + ssent, len, 0);
 		sent = send(pool->sock, s + ssent, len, 0);
 		if (sent < 0) {
 		if (sent < 0) {
-			if (errno != EAGAIN && errno != EWOULDBLOCK)
+			if (!sock_blocks())
 				return SEND_SENDFAIL;
 				return SEND_SENDFAIL;
 			sent = 0;
 			sent = 0;
 		}
 		}
@@ -1108,13 +1108,16 @@ char *recv_line(struct pool *pool)
 				ret = RECV_CLOSED;
 				ret = RECV_CLOSED;
 				break;
 				break;
 			}
 			}
-			if (n < 0 && errno != EAGAIN && errno != EWOULDBLOCK) {
-				ret = RECV_RECVFAIL;
-				break;
+			if (n < 0) {
+				if (!sock_blocks()) {
+					ret = RECV_RECVFAIL;
+					break;
+				}
+			} else {
+				slen = strlen(s);
+				recalloc_sock(pool, slen);
+				strcat(pool->sockbuf, s);
 			}
 			}
-			slen = strlen(s);
-			recalloc_sock(pool, slen);
-			strcat(pool->sockbuf, s);
 			cgtime(&now);
 			cgtime(&now);
 		} while (tdiff(&now, &rstart) < 60 && !strstr(pool->sockbuf, "\n"));
 		} while (tdiff(&now, &rstart) < 60 && !strstr(pool->sockbuf, "\n"));
 		mutex_unlock(&pool->stratum_lock);
 		mutex_unlock(&pool->stratum_lock);