Commit 97b89432 authored by Aman Gupta's avatar Aman Gupta

avformat/hls: ignore http_persistent for segments requring crypto

Encrypted HLS segments have regular http:// urls, but open_input()
actually prefixes them with crypto+ before calling open_url(), so
they end up using the crypto protocol and not the http protocol.

This means invoking ff_http_do_new_request will fail, so we avoid
calling it in the first place. After the earlier http.c commit,
the failure results in a warning printed to the user. In earlier
versions, the failure would cause a segfault.
Signed-off-by: 's avatarAman Gupta <aman@tmm1.net>
parent 903be5e4
...@@ -1479,7 +1479,7 @@ reload: ...@@ -1479,7 +1479,7 @@ reload:
seg = next_segment(v); seg = next_segment(v);
if (c->http_multiple == 1 && !v->input_next_requested && if (c->http_multiple == 1 && !v->input_next_requested &&
seg && av_strstart(seg->url, "http", NULL)) { seg && seg->key_type == KEY_NONE && av_strstart(seg->url, "http", NULL)) {
ret = open_input(c, v, seg, &v->input_next); ret = open_input(c, v, seg, &v->input_next);
if (ret < 0) { if (ret < 0) {
if (ff_check_interrupt(c->interrupt_callback)) if (ff_check_interrupt(c->interrupt_callback))
...@@ -1511,7 +1511,8 @@ reload: ...@@ -1511,7 +1511,8 @@ reload:
return ret; return ret;
} }
if (c->http_persistent && av_strstart(seg->url, "http", NULL)) { if (c->http_persistent &&
seg->key_type == KEY_NONE && av_strstart(seg->url, "http", NULL)) {
v->input_read_done = 1; v->input_read_done = 1;
} else { } else {
ff_format_io_close(v->parent, &v->input); ff_format_io_close(v->parent, &v->input);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment