]> git.sesse.net Git - ffmpeg/commitdiff
http: Check for AVERROR_EOF in the check for premature end
authorMartin Storsjö <martin@martin.st>
Thu, 12 Nov 2020 22:06:30 +0000 (00:06 +0200)
committerMartin Storsjö <martin@martin.st>
Fri, 20 Nov 2020 08:37:24 +0000 (10:37 +0200)
When the check was added (in 3668701f9600, in 2015), some IO
functions returned 0 on EOF (in particular, the TCP protocol
did, but the TLS protocol returned AVERROR_EOF). Since
0e1f771d2200d in 2017, the TCP protocol also returns AVERROR_EOF
instead of 0, making the check for premature end never have the
intended effect.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/http.c

index 3d25d652d3196a2300271928b894fbddb96b0baf..2d24c00e183d4eb0e54c0d8e95afbe43f9d1d2db 100644 (file)
@@ -1436,7 +1436,8 @@ static int http_buf_read(URLContext *h, uint8_t *buf, int size)
         if ((!s->willclose || s->chunksize == UINT64_MAX) && s->off >= target_end)
             return AVERROR_EOF;
         len = ffurl_read(s->hd, buf, size);
-        if (!len && (!s->willclose || s->chunksize == UINT64_MAX) && s->off < target_end) {
+        if ((!len || len == AVERROR_EOF) &&
+            (!s->willclose || s->chunksize == UINT64_MAX) && s->off < target_end) {
             av_log(h, AV_LOG_ERROR,
                    "Stream ends prematurely at %"PRIu64", should be %"PRIu64"\n",
                    s->off, target_end