[master] a1a752407 Handle EWOULDBLOCK as a short write
Poul-Henning Kamp
phk at FreeBSD.org
Mon Apr 29 09:28:08 UTC 2019
commit a1a7524076e8be742fc5e8272561f39eda9d492a
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Apr 29 09:26:27 2019 +0000
Handle EWOULDBLOCK as a short write
diff --git a/bin/varnishd/http1/cache_http1_line.c b/bin/varnishd/http1/cache_http1_line.c
index 6a471b043..ae924d66e 100644
--- a/bin/varnishd/http1/cache_http1_line.c
+++ b/bin/varnishd/http1/cache_http1_line.c
@@ -201,7 +201,7 @@ V1L_Flush(const struct worker *wrk)
i = writev(*v1l->wfd, v1l->iov, v1l->niov);
if (i > 0)
v1l->cnt += i;
- while (i != v1l->liov && i > 0) {
+ while (i != v1l->liov && (i > 0 || errno == EWOULDBLOCK)) {
/* Remove sent data from start of I/O vector,
* then retry; we hit a timeout, but some data
* was sent.
@@ -223,7 +223,8 @@ V1L_Flush(const struct worker *wrk)
"Hit idle send timeout, wrote = %zd/%zd; retrying",
i, v1l->liov);
- v1l_prune(v1l, i);
+ if (i > 0)
+ v1l_prune(v1l, i);
i = writev(*v1l->wfd, v1l->iov, v1l->niov);
if (i > 0)
v1l->cnt += i;
More information about the varnish-commit
mailing list