From 6161eacc748e255fee5af0e1d56845afc27b2e7f Mon Sep 17 00:00:00 2001 From: Basel Sayeh Date: Sat, 7 Jan 2023 03:23:11 +0300 Subject: [PATCH] libavformat/dashenc: Enable HTTP persistent connections for dashenc_delete_file Removed the unnecessary calls to ff_format_io_close this patch introduced in dashenc_delete_file. dashenc_delete_file functions open a new HTTP connection regardless of the http_persistent value, So change their behaviour to keep http connections open if http_persistent is set. Signed-off-by: Basel Sayeh --- libavformat/dashenc.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index 9c1bcad9e3..8e725a0d3f 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -179,6 +179,7 @@ typedef struct DASHContext { int master_playlist_created; AVIOContext *mpd_out; AVIOContext *m3u8_out; + AVIOContext *http_delete; int streaming; int64_t timeout; int index_correction; @@ -642,6 +643,7 @@ static void dash_free(AVFormatContext *s) ff_format_io_close(s, &c->mpd_out); ff_format_io_close(s, &c->m3u8_out); + ff_format_io_close(s, &c->http_delete); } static void output_segment_list(OutputStream *os, AVIOContext *out, AVFormatContext *s, @@ -1855,18 +1857,18 @@ static void dashenc_delete_file(AVFormatContext *s, char *filename) { int http_base_proto = ff_is_http_proto(filename); if (http_base_proto) { - AVIOContext *out = NULL; AVDictionary *http_opts = NULL; set_http_options(&http_opts, c); av_dict_set(&http_opts, "method", "DELETE", 0); - if (dashenc_io_open(s, &out, filename, &http_opts) < 0) { + if (dashenc_io_open(s, &c->http_delete, filename, &http_opts) < 0) { av_log(s, AV_LOG_ERROR, "failed to delete %s\n", filename); } - av_dict_free(&http_opts); - ff_format_io_close(s, &out); + + //Nothing to write + dashenc_io_close(s, &c->http_delete, filename); } else { int res = ffurl_delete(filename); if (res < 0) {