From db2e8fe017698cc8b605e8022f817feabeab079b 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 3d835d43f..0ba48b052 100644 --- a/src/http.c +++ b/src/http.c @@ -801,7 +801,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; @@ -815,7 +815,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) { @@ -826,14 +826,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.3