From af60a19ddded7d58d29732d00e3b5c6bc5814393 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Wed, 24 Apr 2013 23:07:42 +1000 Subject: [PATCH] Use sock_blocks function for stratum send and receive. --- util.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/util.c b/util.c index 94c62ecf..d71beb19 100644 --- a/util.c +++ b/util.c @@ -963,7 +963,7 @@ static enum send_ret __stratum_send(struct pool *pool, char *s, ssize_t len) return SEND_SELECTFAIL; sent = send(pool->sock, s + ssent, len, 0); if (sent < 0) { - if (errno != EAGAIN && errno != EWOULDBLOCK) + if (!sock_blocks()) return SEND_SENDFAIL; sent = 0; } @@ -1108,13 +1108,16 @@ char *recv_line(struct pool *pool) ret = RECV_CLOSED; 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); } while (tdiff(&now, &rstart) < 60 && !strstr(pool->sockbuf, "\n")); mutex_unlock(&pool->stratum_lock);