From patchwork Tue Feb 27 09:18:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Serhii Marchuk X-Patchwork-Id: 7758 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.181.170 with SMTP id m39csp2931318jaj; Tue, 27 Feb 2018 11:47:24 -0800 (PST) X-Google-Smtp-Source: AG47ELuDcljURIKzI07krGvYeuszYw2/Ce/VKSXn0azYD/grkAcOYlDrKho5Iy9bXve9xFLav7mJ X-Received: by 10.28.212.13 with SMTP id l13mr9568787wmg.123.1519760844752; Tue, 27 Feb 2018 11:47:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519760844; cv=none; d=google.com; s=arc-20160816; b=LY2f8BINElIhkafKBvA29pxyq2VvAWmQFpNFgj3y/CIMVT0K5ygDjwQhWrkjZWX0AR aBB8d/UoZ7Pbub488FvTXYIeXMwuFSiTOm9fdjwUL/HvTEBVwZKqA6tuqaaTiAoa9Rod dSJmmPwjwoLJyiXO+ultc9MRaoE5PegUTKgG+aw5SG+l908hLUwg8ZfcD0IoQVd3G++i 5qk7iyrybHT2+ElNsGHF9AyrePshNfeA3sIskwjM3GCf6F4CH+oheu/tP6AIaDCM6eKq 1YtBJB8n+M+ueC0A+IFJWPrxZrvk6PlFCgDHAawQqhcyYQDDUy8KQaagbHiTW0OUTssh f34Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=giam8B+BpUXMtw0HqAkFBv/6A8u4p+ReupbnQ2KLaDY=; b=wSQc9liIg8LF5WbqJNibeiMPgdcD3MKCh8FKmsnF3de9EYHOuRtjc7SZ8Me6agfsuh jFLggO/XrwhLR/kkUILMttvE/AvZjkQ/V2TAn4/FZ73+HNCPY3/CB7pUtUkzDEhW+Xmm XXe1/7d7dq9VgG/rBhE0o7fYWkPng3yI3RaiX3I1Q9WwkYC2VIc9Xzu1fwXYHxtzEYtr QN3bdsWsD9AP3+Q4KDexStiSrUVtp0aA966cSaAQiOnyAx12RGML6KHdydIDJUUAtHrs 2UCoIVOy8/yiVA+125U6+oPHx1zuY0r0BYtXtg66tBXnj5Nnj3PfSa4I9RxlBwojMHbh TK5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Sl6gw3ZQ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s6si119729wma.63.2018.02.27.11.47.23; Tue, 27 Feb 2018 11:47:24 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Sl6gw3ZQ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9418568A412; Tue, 27 Feb 2018 21:47:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf0-f68.google.com (mail-lf0-f68.google.com [209.85.215.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6EA1A689F9A for ; Tue, 27 Feb 2018 11:24:48 +0200 (EET) Received: by mail-lf0-f68.google.com with SMTP id 37so26442246lfs.7 for ; Tue, 27 Feb 2018 01:24:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=nFqitgzwUykz22CPfMQT6G8Fktn/SPnZeMjaxS2z1kw=; b=Sl6gw3ZQaRtQAA2UoR3MKSyIaz08xXIkDOgwEoF6VJtmVlTm4FR3XdV0ajE4QpaM1f npDP8eDeWfdtQHQQnvVq8y1KSU2cGIIqNg+mHoHyJGQUTqRj+a25MIXwPn1VD0hZ4tih K4zNjNviw2+q98iJrXCM54goXOEk9a/age+G+GX2C5mWWncBAaKrG7YXI2qbUsIAg92M rMVEFsTPwkYI6CCUTfiI3YNaH3s5Dhd0lBdfVCIW+hSWqxk8uulHW6q7JpHBJMXQMYcm YVgFaYtxRMqgQ8fnMpHSwrfIilPbqIdI0gIaFRrfFwLTJklzhIrFqRNAqdJgnQ+WFFAP YTrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=nFqitgzwUykz22CPfMQT6G8Fktn/SPnZeMjaxS2z1kw=; b=Djyh+8qW5MZgockZFbLldm01Cur9hL0lAOIboPfiNqraSWBFbwk03VwYbfbQn9nrrp RsKe3VTW9kmPPd0gUJzlUL5lhAKzENjaJC9Ka5aZbbtnAzMZYp3OOvMUVcHVh5fsfRoO OlQubjA+M5n4Izx2hKyG4Fuan5zH+/rZYwzDvnhOlZ14EH/poUai6IXPAOz1mhyERi+D uVm7WfQLpQAIgVoWneT6fxaUkagFxjg7dyhEb53vOra6ov2UYhPhrhgQjc4/T7n6oNNJ ekVyhxa3daguQlovwD1wO58LlmWtqP3GfajXa90AIJCslq7v/KIwGAxNcMkUzHToMWCC w8cg== X-Gm-Message-State: APf1xPC7wGQaOW1bC79+czWaT0vapyAEGuwhhZJSSMpP/ZNziX6yS2YL iT4VlpBf679svRq/LmdbEXtE7g== X-Received: by 10.46.21.21 with SMTP id s21mr3954319ljd.58.1519723119950; Tue, 27 Feb 2018 01:18:39 -0800 (PST) Received: from localhost.localdomain ([195.69.222.56]) by smtp.gmail.com with ESMTPSA id v3sm2430492ljd.59.2018.02.27.01.18.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Feb 2018 01:18:39 -0800 (PST) From: Serhii Marchuk To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Feb 2018 11:18:10 +0200 Message-Id: <20180227091810.16578-1-serhii.marchuk@gmail.com> X-Mailer: git-send-email 2.14.1 X-Mailman-Approved-At: Tue, 27 Feb 2018 21:47:16 +0200 Subject: [FFmpeg-devel] [PATCH] avformat/dashenc: Use HTTP DELETE for HTTP base proto 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: Serhii Marchuk MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavformat/dashenc.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index 83e0cff728..66f12d8d49 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -1131,6 +1131,28 @@ static int update_stream_extradata(AVFormatContext *s, OutputStream *os, return 0; } +static void dashenc_delete_file(AVFormatContext *s, char *filename) { + DASHContext *c = s->priv_data; + 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) { + av_log(s, AV_LOG_ERROR, "failed to delete %s\n", filename); + } + + av_dict_free(&http_opts); + dashenc_io_close(s, &out, filename); + } else if (unlink(filename) < 0) { + av_log(s, AV_LOG_ERROR, "failed to delete %s: %s\n", filename, strerror(errno)); + } +} + static int dash_flush(AVFormatContext *s, int final, int stream) { DASHContext *c = s->priv_data; @@ -1215,7 +1237,7 @@ static int dash_flush(AVFormatContext *s, int final, int stream) for (j = 0; j < remove; j++) { char filename[1024]; snprintf(filename, sizeof(filename), "%s%s", c->dirname, os->segments[j]->file); - unlink(filename); + dashenc_delete_file(s, filename); av_free(os->segments[j]); } os->nb_segments -= remove; @@ -1367,9 +1389,9 @@ static int dash_write_trailer(AVFormatContext *s) for (i = 0; i < s->nb_streams; i++) { OutputStream *os = &c->streams[i]; snprintf(filename, sizeof(filename), "%s%s", c->dirname, os->initfile); - unlink(filename); + dashenc_delete_file(s, filename); } - unlink(s->url); + dashenc_delete_file(s, s->url); } return 0;