From patchwork Fri Nov 16 08:57:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jeyapal, Karthick" X-Patchwork-Id: 11037 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 783B444D03D for ; Fri, 16 Nov 2018 10:57:28 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E505E689F07; Fri, 16 Nov 2018 10:57:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a2i836.smtp2go.com (a2i836.smtp2go.com [103.47.207.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D07EA689C9E for ; Fri, 16 Nov 2018 10:57:22 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1542359548; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=E1P97pmafMhfuBJhsitFzCnAu0e4GTdy4YNDiNmqiaU=; b=n73T133t RLImwSxl75N7P5CuPEVJPRF5DC1E8632vvrBbcvlMqatUmsDU0eqiIdq619H+A1To/n+0xs9/2j1j dj/EuGJFV4Lj4HC/sxiVmavhDQQ5Xv26V0cmAEs1es69N+CFKzh03WoXtgKYPQRprxzQDXpq28UIg uooCLz8E7ZpsD6aqFWpTBrfafItOTOtpMKwZvf22kGWPsJ6m/RBaX5WAGO0Logz0c/QMJoNeFt1ZY fiWL/Vvaj2gvk/cnwExmVV1Hkh4Yn7fCZrt18jubHF3JjxROkM1BJHlGxRC1JyIaGGfix0KS3ce5X b3VdlvnyU2hEA8BpPgBE34SaFA==; Received: from [10.66.228.43] (helo=SmtpCorp) by smtpcorp.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.91) (envelope-from ) id 1gNZwG-SH4gl3-D0; Fri, 16 Nov 2018 08:57:20 +0000 Received: from [10.63.208.195] (helo=blr-mp4tf.bangalore.corp.akamai.com) by smtpcorp.com with esmtpa (Exim 4.91) (envelope-from ) id 1gNZwF-wSES1H-DB; Fri, 16 Nov 2018 08:57:19 +0000 From: Karthick J To: ffmpeg-devel@ffmpeg.org Date: Fri, 16 Nov 2018 14:27:11 +0530 Message-Id: <20181116085712.26198-1-kjeyapal@akamai.com> X-Mailer: git-send-email 2.17.1 (Apple Git-112) X-Smtpcorp-Track: 1gNZwFwSES1HDU.7sZIkGASz Feedback-ID: 337386m:337386asVRLGB:337386szuEDc98-8 X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH 1/2] avformat/dashenc : Handled error from ff_http_do_new_request() cleanly X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Karthick J MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavformat/dashenc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index d151921175..2c1cce0c92 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -168,6 +168,8 @@ static int dashenc_io_open(AVFormatContext *s, AVIOContext **pb, char *filename, URLContext *http_url_context = ffio_geturlcontext(*pb); av_assert0(http_url_context); err = ff_http_do_new_request(http_url_context, filename); + if (err < 0) + ff_format_io_close(s, pb); #endif } return err; @@ -177,6 +179,9 @@ static void dashenc_io_close(AVFormatContext *s, AVIOContext **pb, char *filenam DASHContext *c = s->priv_data; int http_base_proto = filename ? ff_is_http_proto(filename) : 0; + if (!*pb) + return; + if (!http_base_proto || !c->http_persistent) { ff_format_io_close(s, pb); #if CONFIG_HTTP_PROTOCOL @@ -318,7 +323,8 @@ static int flush_dynbuf(OutputStream *os, int *range_length) // write out to file *range_length = avio_close_dyn_buf(os->ctx->pb, &buffer); os->ctx->pb = NULL; - avio_write(os->out, buffer + os->written_len, *range_length - os->written_len); + if (os->out) + avio_write(os->out, buffer + os->written_len, *range_length - os->written_len); os->written_len = 0; av_free(buffer); @@ -1496,9 +1502,9 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt) use_rename ? "%s.tmp" : "%s", os->full_path); set_http_options(&opts, c); ret = dashenc_io_open(s, &os->out, os->temp_path, &opts); + av_dict_free(&opts); if (ret < 0) return ret; - av_dict_free(&opts); } //write out the data immediately in streaming mode