From: Jaroslav Kysela Date: Fri, 8 Sep 2017 06:29:24 +0000 (+0200) Subject: http: fix http_extra_flush return value X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=db2e8fe017698cc8b605e8022f817feabeab079b;p=thirdparty%2Ftvheadend.git http: fix http_extra_flush return value --- 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; } /**