aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2020-11-13 00:06:30 +0200
committerMartin Storsjö <martin@martin.st>2020-11-20 10:37:24 +0200
commit104e5233f03f1ed3aa34b256cd2b9023a9076ffb (patch)
treeec726fae68d38278dbed1867fc47ab4c223d9102
parentbf19833ae26b054a111de79b5ab1681c00cd8d0a (diff)
downloadffmpeg-104e5233f03f1ed3aa34b256cd2b9023a9076ffb.tar.gz
http: Check for AVERROR_EOF in the check for premature end
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>
-rw-r--r--libavformat/http.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavformat/http.c b/libavformat/http.c
index 3d25d652d3..2d24c00e18 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -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