Mailing List Archive

[6.0] b6a94a282 Handle EWOULDBLOCK as a short write
commit b6a94a2820747f02fb798ae15e6bd96ecb3857be
Author: Poul-Henning Kamp <phk@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 7897cca4c..e7be7c8c2 100644
--- a/bin/varnishd/http1/cache_http1_line.c
+++ b/bin/varnishd/http1/cache_http1_line.c
@@ -204,7 +204,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.
@@ -226,7 +226,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;
_______________________________________________
varnish-commit mailing list
varnish-commit@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-commit