diff --git a/bin/varnishd/http1/cache_http1_vfp.c b/bin/varnishd/http1/cache_http1_vfp.c index 8a2fb39156..d5862b084f 100644 --- a/bin/varnishd/http1/cache_http1_vfp.c +++ b/bin/varnishd/http1/cache_http1_vfp.c @@ -74,7 +74,10 @@ v1f_read(const struct vfp_ctx *vc, struct http_conn *htc, void *d, ssize_t len) htc->pipeline_b = htc->pipeline_e = NULL; } if (len > 0) { - i = read(*htc->rfd, p, len); + do { + errno = 0; + i = read(*htc->rfd, p, len); + } while (i < 0 && errno == EINTR); if (i < 0) { VTCP_Assert(i); VSLbs(vc->wrk->vsl, SLT_FetchError,