[FFmpeg-devel] [PATCH v2 2/4] avformat/hls: respect http_persistent only for http playlist urls

wm4 nfxjfg at googlemail.com
Tue Dec 26 07:28:01 EET 2017


On Mon, 25 Dec 2017 21:22:59 -0800
Aman Gupta <ffmpeg at tmm1.net> wrote:

> From: Aman Gupta <aman at tmm1.net>
> 
> Fixes a segfault when reading a live playlist (without end tag) from non-http url (like a file on disk).
> 
> Signed-off-by: Aman Gupta <aman at tmm1.net>
> ---
>  libavformat/hls.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/hls.c b/libavformat/hls.c
> index 73bf55b791..c30d71a477 100644
> --- a/libavformat/hls.c
> +++ b/libavformat/hls.c
> @@ -724,8 +724,9 @@ static int parse_playlist(HLSContext *c, const char *url,
>      struct variant_info variant_info;
>      char tmp_str[MAX_URL_SIZE];
>      struct segment *cur_init_section = NULL;
> +    int is_http = av_strstart(url, "http", NULL);

There got to be a better way to check whether the protocol
implementation is one which works with the http persistent functions. I
can only repeat my suggestion that this should be integrated into
URLContext.

> -    if (!in && c->http_persistent && c->playlist_pb) {
> +    if (!in && is_http && c->http_persistent && c->playlist_pb) {
>          in = c->playlist_pb;
>          ret = open_url_keepalive(c->ctx, &c->playlist_pb, url);
>          if (ret == AVERROR_EXIT) {
> @@ -759,7 +760,7 @@ static int parse_playlist(HLSContext *c, const char *url,
>          if (ret < 0)
>              return ret;
>  
> -        if (c->http_persistent)
> +        if (c->http_persistent && is_http)
>              c->playlist_pb = in;
>          else
>              close_in = 1;



More information about the ffmpeg-devel mailing list