aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Fritsch <sf@sfritsch.de>2011-09-03 22:29:07 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-09-03 22:29:07 +0200
commit31dfc4959816aa4637e50c7f79660c75205ef84c (patch)
treee7828e4ee1be900547566d9050d1351710866616
parent23a287e9cc4bfebd98190f2442367f7c0c94099f (diff)
downloadffmpeg-31dfc4959816aa4637e50c7f79660c75205ef84c.tar.gz
http: Fix decetion of range support in HTTP servers
currently libavformat only allows seeking if a request with "Range: 0-" results in a 206 reply from the HTTP server which includes a Content-Range header. But according to RFC 2616, the server may also reply with a normal 200 reply (which is more efficient for a request for the whole file). In fact Apache HTTPD 2.2.20 has changed the behaviour in this way and it looks like this change will be kept in future versions. The fix for libavformat is easy: Also look at the Accept-Ranges header.
-rw-r--r--libavformat/http.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libavformat/http.c b/libavformat/http.c
index 95ba456cea..518c47d9c9 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -265,6 +265,8 @@ static int process_line(URLContext *h, char *line, int line_count,
s->filesize = atoll(slash+1);
}
h->is_streamed = 0; /* we _can_ in fact seek */
+ } else if (!strcasecmp (tag, "Accept-Ranges") && !strncmp (p, "bytes", 5)) {
+ h->is_streamed = 0;
} else if (!strcasecmp (tag, "Transfer-Encoding") && !strncasecmp(p, "chunked", 7)) {
s->filesize = -1;
s->chunksize = 0;