]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
http: fix http_extra_flush return value
authorJaroslav Kysela <perex@perex.cz>
Fri, 8 Sep 2017 06:29:24 +0000 (08:29 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 18 Sep 2017 13:13:16 +0000 (15:13 +0200)
src/http.c

index c9aa241c14d97503c40dc6d6eef1aabdf5d161e2..c99aa1b07640bee2d3053d091b52357aad691ac4 100644 (file)
@@ -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;
 }
 
 /**