On 30.01.2016 02:17, Michael Niedermayer wrote: > From: Michael Niedermayer <mich...@niedermayer.cc> > > Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> > --- > libavdevice/lavfi.c | 7 ++++++- > libavformat/async.c | 2 +- > libavformat/cache.c | 3 ++- > libavformat/concat.c | 6 ++++-- > libavformat/crypto.c | 5 +++-- > libavformat/dashenc.c | 9 +++++---- > libavformat/file.c | 2 ++ > libavformat/ftp.c | 11 +++++++---- > libavformat/gopher.c | 4 ++-- > libavformat/hdsenc.c | 13 +++++++------ > libavformat/hls.c | 8 +++++--- > libavformat/hlsenc.c | 29 +++++++++++++++-------------- > libavformat/hlsproto.c | 11 +++++++---- > libavformat/http.c | 18 ++++++++++++------ > libavformat/icecast.c | 3 ++- > libavformat/md5proto.c | 5 +++-- > libavformat/mmst.c | 5 +++-- > libavformat/movenc.c | 2 +- > libavformat/rtmpcrypt.c | 5 +++-- > libavformat/rtmpproto.c | 10 ++++++---- > libavformat/rtpproto.c | 10 +++++++--- > libavformat/rtsp.c | 20 ++++++++++---------- > libavformat/rtspdec.c | 10 ++++++---- > libavformat/sapdec.c | 5 +++-- > libavformat/sapenc.c | 9 ++++++--- > libavformat/segment.c | 17 +++++++++-------- > libavformat/smoothstreamingenc.c | 19 +++++++++++-------- > libavformat/srtpproto.c | 3 ++- > libavformat/subfile.c | 4 +++- > libavformat/tee.c | 5 ++++- > libavformat/tls.c | 5 +++-- > libavformat/tls_securetransport.c | 5 +++-- > libavformat/webm_chunk.c | 8 +++++--- > 33 files changed, 168 insertions(+), 110 deletions(-)
Should be fine. On 30.01.2016 01:58, Michael Niedermayer wrote: > On Sat, Jan 30, 2016 at 12:03:48AM +0100, Andreas Cadhalpun wrote: >> This looks mostly fine. I tested a few protocols and it worked as intended. >> However, it doesn't forward the whitelist when ffurl_connect is called >> directly, which >> happens in the hls demuxer and the mmsh, rtmphttp and rtsp protocols. >> I think that should be done, too. > > fixed hls, others left to volunteers, i have no testcases for them I don't see how hls is fixed, but don't have testcases either. Anyway, the following should work: diff --git a/libavformat/hls.c b/libavformat/hls.c index 0883cb5..a87bf2e 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -1131,6 +1131,12 @@ static int open_input(HLSContext *c, struct playlist *pls, struct segment *seg) av_opt_set(pls->input->priv_data, "key", key, 0); av_opt_set(pls->input->priv_data, "iv", iv, 0); + if (c->avfmt->protocol_whitelist) { + ret = av_dict_set(&opts, "protocol_whitelist", c->avfmt->protocol_whitelist, 0); + if (ret < 0) + goto cleanup; + } + if ((ret = url_connect(pls, c->avio_opts, opts)) < 0) { goto cleanup; } diff --git a/libavformat/mmsh.c b/libavformat/mmsh.c index 16f07fe..7412c3a 100644 --- a/libavformat/mmsh.c +++ b/libavformat/mmsh.c @@ -246,6 +246,14 @@ static int mmsh_open_internal(URLContext *h, const char *uri, int flags, int tim host, port, mmsh->request_seq++); av_opt_set(mms->mms_hd->priv_data, "headers", headers, 0); + if (!mms->mms_hd->protocol_whitelist && h->protocol_whitelist) { + mms->mms_hd->protocol_whitelist = av_strdup(h->protocol_whitelist); + if (!mms->mms_hd->protocol_whitelist) { + err = AVERROR(ENOMEM); + goto fail; + } + } + err = ffurl_connect(mms->mms_hd, NULL); if (err) { goto fail; diff --git a/libavformat/rtmphttp.c b/libavformat/rtmphttp.c index 8ed5eb1..3bacf84 100644 --- a/libavformat/rtmphttp.c +++ b/libavformat/rtmphttp.c @@ -220,6 +220,14 @@ static int rtmp_http_open(URLContext *h, const char *uri, int flags) av_opt_set(rt->stream->priv_data, "multiple_requests", "1", 0); av_opt_set_bin(rt->stream->priv_data, "post_data", "", 1, 0); + if (!rt->stream->protocol_whitelist && h->protocol_whitelist) { + rt->stream->protocol_whitelist = av_strdup(h->protocol_whitelist); + if (!rt->stream->protocol_whitelist) { + ret = AVERROR(ENOMEM); + goto fail; + } + } + /* open the http context */ if ((ret = ffurl_connect(rt->stream, NULL)) < 0) goto fail; diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index d710469..c26ce75 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -1746,6 +1746,14 @@ redirect: sessioncookie); av_opt_set(rt->rtsp_hd->priv_data, "headers", headers, 0); + if (!rt->rtsp_hd && s->protocol_whitelist) { + rt->rtsp_hd->protocol_whitelist = av_strdup(s->protocol_whitelist); + if (!rt->rtsp_hd->protocol_whitelist) { + err = AVERROR(ENOMEM); + goto fail; + } + } + /* complete the connection */ if (ffurl_connect(rt->rtsp_hd, NULL)) { err = AVERROR(EIO); Best regards, Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel