From 7803a040419f7abb82310fb02a109f6a411650d6 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 3 Jun 2012 18:34:53 +0200 Subject: [PATCH] http: try to detect live akamai streams and dont enable seeking for them Fixes ticket1320 Signed-off-by: Michael Niedermayer --- libavformat/http.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavformat/http.c b/libavformat/http.c index 0314557b2c..5355bdc68d 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -56,6 +56,7 @@ typedef struct { int multiple_requests; /**< A flag which indicates if we use persistent connections. */ uint8_t *post_data; int post_datalen; + int is_akamai; } HTTPContext; #define OFFSET(x) offsetof(HTTPContext, x) @@ -317,7 +318,8 @@ static int process_line(URLContext *h, char *line, int line_count, if ((slash = strchr(p, '/')) && strlen(slash) > 0) s->filesize = strtoll(slash+1, NULL, 10); } - h->is_streamed = 0; /* we _can_ in fact seek */ + if (!s->is_akamai || s->filesize != 2147483647) + h->is_streamed = 0; /* we _can_ in fact seek */ } else if (!av_strcasecmp(tag, "Accept-Ranges") && !strncmp(p, "bytes", 5)) { h->is_streamed = 0; } else if (!av_strcasecmp (tag, "Transfer-Encoding") && !av_strncasecmp(p, "chunked", 7)) { @@ -332,6 +334,8 @@ static int process_line(URLContext *h, char *line, int line_count, } else if (!av_strcasecmp (tag, "Connection")) { if (!strcmp(p, "close")) s->willclose = 1; + } else if (!av_strcasecmp (tag, "Server") && !av_strcasecmp (p, "AkamaiGHost")) { + s->is_akamai = 1; } } return 1;