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