Re: [FFmpeg-devel] [PATCH] http: Do not try to make a new request when seeking past the end of the file

2019-02-22 Thread Vittorio Giovara
On Wed, Feb 20, 2019 at 9:54 AM Vittorio Giovara 
wrote:

> From: Justin Ruggles 
>
> This avoids making invalid HTTP Range requests for a byte range past the
> known end of the file during a seek. Those requests generally return a HTTP
> response of 416 Range Not Satisfiable, which causes an error response.
>
> Reference: https://tools.ietf.org/html/rfc7233
>
> Signed-off-by: Vittorio Giovara 
> ---
>  libavformat/http.c | 7 +++
>  1 file changed, 7 insertions(+)
>
> diff --git a/libavformat/http.c b/libavformat/http.c
> index a0a0636cf2..1e40268599 100644
> --- a/libavformat/http.c
> +++ b/libavformat/http.c
> @@ -1691,6 +1691,13 @@ static int64_t http_seek_internal(URLContext *h,
> int64_t off, int whence, int fo
>  if (s->off && h->is_streamed)
>  return AVERROR(ENOSYS);
>
> +/* do not try to make a new connection if seeking past the end of the
> file */
> +if (s->end_off || s->filesize != UINT64_MAX) {
> +uint64_t end_pos = s->end_off ? s->end_off : s->filesize;
> +if (s->off >= end_pos)
> +return s->off;
> +}
> +
>  /* we save the old context in case the seek fails */
>  old_buf_size = s->buf_end - s->buf_ptr;
>  memcpy(old_buf, s->buf_ptr, old_buf_size);
> --
> 2.20.1
>
>
If no objections, I'd like to push this to master later today.
-- 
Vittorio
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] http: Do not try to make a new request when seeking past the end of the file

2019-02-20 Thread Vittorio Giovara
From: Justin Ruggles 

This avoids making invalid HTTP Range requests for a byte range past the
known end of the file during a seek. Those requests generally return a HTTP
response of 416 Range Not Satisfiable, which causes an error response.

Reference: https://tools.ietf.org/html/rfc7233

Signed-off-by: Vittorio Giovara 
---
 libavformat/http.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/libavformat/http.c b/libavformat/http.c
index a0a0636cf2..1e40268599 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -1691,6 +1691,13 @@ static int64_t http_seek_internal(URLContext *h, int64_t 
off, int whence, int fo
 if (s->off && h->is_streamed)
 return AVERROR(ENOSYS);
 
+/* do not try to make a new connection if seeking past the end of the file 
*/
+if (s->end_off || s->filesize != UINT64_MAX) {
+uint64_t end_pos = s->end_off ? s->end_off : s->filesize;
+if (s->off >= end_pos)
+return s->off;
+}
+
 /* we save the old context in case the seek fails */
 old_buf_size = s->buf_end - s->buf_ptr;
 memcpy(old_buf, s->buf_ptr, old_buf_size);
-- 
2.20.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel