From 45243abd2bd83d9fb2c68b9c402441425e21ba8c Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 8 Sep 2017 08:29:24 +0200 Subject: [PATCH] http: fix http_extra_flush return value --- src/http.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/http.c b/src/http.c index c9aa241c1..c99aa1b07 100644 --- a/src/http.c +++ b/src/http.c @@ -716,7 +716,7 @@ int http_extra_flush(http_connection_t *hc) { htsbuf_data_t *hd; - int r = 0, serr; + int r, serr = 0; if (atomic_add(&hc->hc_extra_insend, 1) != 0) goto fin; @@ -730,7 +730,7 @@ http_extra_flush(http_connection_t *hc) MSG_DONTWAIT | (TAILQ_NEXT(hd, hd_link) ? MSG_MORE : 0)); serr = errno; } while (r < 0 && serr == EINTR); - if (r + hd->hd_data_off >= hd->hd_data_size) { + if (r > 0 && r + hd->hd_data_off >= hd->hd_data_size) { atomic_dec(&hc->hc_extra_chunks, 1); htsbuf_data_free(&hc->hc_extra, hd); } else if (r > 0) { @@ -741,14 +741,14 @@ http_extra_flush(http_connection_t *hc) if (r < 0) { if (ERRNO_AGAIN(serr)) - r = 0; + serr = 0; break; } } fin: atomic_dec(&hc->hc_extra_insend, 1); - return r; + return serr; } /** -- 2.47.2