diff --git a/libavformat/http.c b/libavformat/http.c index 71dd6c2b1f..85cbd06092 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -320,8 +320,11 @@ int ff_http_get_shutdown_status(URLContext *h) return ret; } +int ff_http_do_new_request(URLContext *h, const char *uri) { + return ff_http_do_new_request2(h, uri, NULL); +} -int ff_http_do_new_request(URLContext *h, const char *uri) +int ff_http_do_new_request2(URLContext *h, const char *uri, AVDictionary **opts) { HTTPContext *s = h->priv_data; AVDictionary *options = NULL; @@ -366,6 +369,9 @@ int ff_http_do_new_request(URLContext *h, const char *uri) if (!s->location) return AVERROR(ENOMEM); + if ((ret = av_opt_set_dict(s, opts)) < 0) + return ret; + av_log(s, AV_LOG_INFO, "Opening \'%s\' for %s\n", uri, h->flags & AVIO_FLAG_WRITE ? "writing" : "reading"); ret = http_open_cnx(h, &options); av_dict_free(&options); diff --git a/libavformat/http.h b/libavformat/http.h index 662bd2cab6..5557ce9b58 100644 --- a/libavformat/http.h +++ b/libavformat/http.h @@ -56,6 +56,19 @@ int ff_http_get_shutdown_status(URLContext *h); */ int ff_http_do_new_request(URLContext *h, const char *uri); +/** + * Send a new HTTP request, reusing the old connection. + * + * @param h pointer to the resource + * @param uri uri used to perform the request + * @param options A dictionary filled with HTTP options. On return + * this parameter will be destroyed and replaced with a dict containing options + * that were not found. May be NULL. + * @return a negative value if an error condition occurred, 0 + * otherwise + */ +int ff_http_do_new_request2(URLContext *h, const char *uri, AVDictionary **options); + int ff_http_averror(int status_code, int default_averror); #endif /* AVFORMAT_HTTP_H */