diff mbox series

[FFmpeg-devel] avformat/hlsenc: refine error message when retry with new http session

Message ID 20240707084920.7880-1-lq@chinaffmpeg.org
State New
Headers show
Series [FFmpeg-devel] avformat/hlsenc: refine error message when retry with new http session | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 fail Make fate failed
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Steven Liu July 7, 2024, 8:49 a.m. UTC
Fix CID: 1609624
The hlsenc should give error message when hlsenc_io_open error, release
memory of filename and options, should return warning message when
hlsenc_io_close error.

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
---
 libavformat/hlsenc.c | 9 +++++++++
 1 file changed, 9 insertions(+)
diff mbox series

Patch

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 274de00f9a..494875bc3c 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -2617,8 +2617,17 @@  static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
                            " will retry with a new http session.\n");
                     ff_format_io_close(s, &vs->out);
                     ret = hlsenc_io_open(s, &vs->out, filename, &options);
+                    if (ret < 0) {
+                        av_log(s, hls->ignore_io_errors ? AV_LOG_WARNING : AV_LOG_ERROR,
+                            "Failed to open file '%s'\n", filename);
+                        av_freep(&filename);
+                        av_dict_free(&options);
+                        return hls->ignore_io_errors ? 0 : ret;
+                    }
                     reflush_dynbuf(vs, &range_length);
                     ret = hlsenc_io_close(s, &vs->out, filename);
+                    if (ret < 0)
+                        av_log(s, AV_LOG_WARNING, "Failed retry upload file '%s' with new http session.\n", oc->url);
                 }
                 av_dict_free(&options);
                 av_freep(&vs->temp_buffer);