From patchwork Wed Mar 28 04:52:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 8205 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp28255jad; Tue, 27 Mar 2018 21:52:41 -0700 (PDT) X-Google-Smtp-Source: AIpwx49FCx5OgUq/ReWRm+mtCgd8KexQgp7Udx+k1B0M5dNVuoKmwnm5TReSMoqn4GMUqPDjHj1u X-Received: by 10.28.24.66 with SMTP id 63mr1261987wmy.115.1522212761044; Tue, 27 Mar 2018 21:52:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522212761; cv=none; d=google.com; s=arc-20160816; b=AFRNxBX3hUKUkMc3MYe2zCJnd8Wfune+6Ox2D/0w12Sp1YQrvaGVcftIsiyworVD/M 4stZSEhtclAMnyoDJawsoNNI5Aaa4a5Zop4Io2y3LgPyLW5CBiXXcZQjuTymNgc5n5fV +cncrBPicTirh/7JnQuuuvY176V/Y1Qxs6eAOaFN2bw94oEIyYxR6srQa54QwASKF6OY NcEsZeAibQxI/bgyPaFMw+GyOhMA7T7SPMFltyJCCIP6SMAwMVpE8/NK2jla9WZI5OvF wJh1V2CfoLD7lJnINYvVIzNatkWZM3vc1UdLUeK08U8XKIa6TPzQswK2OxvVjGYEPfQO MmAg== 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:feedback-id:message-id:date:to:from :dkim-signature:delivered-to:arc-authentication-results; bh=pr3TCrOySKFQ8aurr//wvFOiQAhA77CXgV0U6H0JKLg=; b=Xqpdyr9mrlG+k7+AVfGLnk0zzElbGgSIC8temuqYqOqiuyAm/YZfNVwQsIoHvDXPBw Qj4FKVgSOVZ0O+AmmUGOeUrZSnRSEaR+b6Sa4bGed+KjYU3nNHCzcXVlS8BErxD3yUkq 7WWT5p6JDGIm3+4OfUHITDsVbW4/daaOWcb6uNrE926de0ZyQ8hmmNnQdSzDb8dtiSgO XmAuMYtkpnq1B+bkiwFXhLASQ42M0JZaolENoaypIpq1JaCK/N4P6k82RnAaeplo3sFG tI6qfC4U7wLjjal6c4r6dIOUwy9X56kObCbWiamx8aw41jlMaCTLrvQtgQ4I22i6vUFH aPTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=DSDq03Of; 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=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id z75si2102494wrc.116.2018.03.27.21.52.39; Tue, 27 Mar 2018 21:52:41 -0700 (PDT) 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=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=DSDq03Of; 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=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 37684689AA5; Wed, 28 Mar 2018 07:52:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a2i831.smtp2go.com (a2i831.smtp2go.com [103.47.207.63]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D23EF689A69 for ; Wed, 28 Mar 2018 07:52:13 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1522213657; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=WGe8p7AoewcDPdOAhm4aEEwpmmAuvyUy6FjC8EoTUT4=; b=DSDq03Of PXbudZpaGeTWcvemenRWsnf71dsRtUdbm79MePF5C4ZuAEvYqbmFj47A4Cdc57/N1YDytcxlealhR xBPIdLY7UiIVxIgWrII2giksUVhLiaHTgELsSaPlWhrO1wGVVLHK5EpL27s9P9eP3Np+cpsGVfiYf 6qx1U0+fp2Xb+tdIZWN8ZEhgtIeR9PzEMQ7ANjFMTM8fEGch7MKa0npCFN65l0vX3yyhT8BXCd5aM 9eNeWkoLAotthSa+3YaB1UbYli2eYyflRimT0eUsNLyj827I+igDhG8bwMA6d6PfJ/FpG3rX2Gp4F gqOzqsJEHY/sZ6FmajSTF2Wn5w==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Mar 2018 10:22:21 +0530 Message-Id: <1522212741-15365-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 X-Smtpcorp-Track: 1f134l4baCaxuy.I1ALcyGjj Feedback-ID: 337386m:337386asVRLGB:337386sRZo-tInvE:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH 1/1] avformat/http: flushing tcp receive buffer when it is write only mode 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: Vishwanath Dixit MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Vishwanath Dixit In write only mode, the TCP receive buffer keeps growing and eventually becomes full. This results in zero tcp window size, which in turn causes unwanted issues, like, terminated tcp connection. The issue is apparent when http persistent connection is enabled in hls/dash streaming use cases. To overcome this issue, the logic here reads and discards the data from the tcp socket. --- libavformat/http.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavformat/http.c b/libavformat/http.c index 983034f..e6d414b 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -1627,6 +1627,13 @@ static int http_shutdown(URLContext *h, int flags) ((flags & AVIO_FLAG_READ) && s->chunked_post && s->listen)) { ret = ffurl_write(s->hd, footer, sizeof(footer) - 1); ret = ret > 0 ? 0 : ret; + /* flush the receive buffer when it is write only mode */ + if (!(flags & AVIO_FLAG_READ)) { + char buf[1024]; + s->hd->flags |= AVIO_FLAG_NONBLOCK; + ffurl_read(s->hd, buf, sizeof(buf)); + s->hd->flags &= ~AVIO_FLAG_NONBLOCK; + } s->end_chunked_post = 1; }