From patchwork Sat Dec 30 16:44:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: wm4 X-Patchwork-Id: 7034 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.79.195 with SMTP id r64csp11788693jad; Sat, 30 Dec 2017 08:44:19 -0800 (PST) X-Google-Smtp-Source: ACJfBotIgj63JudnleNv8S8zWbNShtyfC3omVEFTOHvUh4xY+GdDam5CqGjUlKjJHutxsIeaiGop X-Received: by 10.28.166.193 with SMTP id p184mr31248610wme.6.1514652259130; Sat, 30 Dec 2017 08:44:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1514652259; cv=none; d=google.com; s=arc-20160816; b=TIIuMzu1S3oLwbRtnqrLBb9APEp/1Xdf+4oD6IWsNWvLvxctAv5ksiOS3g0EGe3WpV mRGAjHOzqRZUUMM9bFLihDgDHoiaQS0a7dssSJ099rM3ZIqiy2trQW3uAdcmNptaxXrC 45yEOhoRsVcQlH63uIIisssqOwmrj/NA/OgRPhH7tDPIKSZeZ78jMTL+WjrHxityrnYo TQJCcRj4C7ylJG5VOIHj4VFqmHRwwFTfDgqxIB7Va+ycDn9n1ZH13/WFbpFrNkUhafqf aELVpb743zeNDphMeJhF1XmTQirNznrgAuiSbVXFxtfARPR2+hkRRxbks/WXrj+D4fcJ iXwg== 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=3B2Ws0znt6RzPEHrwB+Exa1UokiIDRz3zW/jdmmzAzs=; b=B8VWcZqiAkhsMVLXWivimw8D625G9Z8HA0E6/DZHH46kMK4eAlKVW3indDBp52i7xs j5iuhRezg+qAlnvxYGDhkfxPJ8zepetpun3RdJZguRsN8WsjTg27Bl9xFQ/G79SvdM8O qt8Hio/dMPp+QCxXOl1gJoUGfkCES/mL3G8cNedExHWUGV2vxOFl5OL6H+2jdBT3IOrH OFBBvN8kMJ62059EGHJeh0Fa6kJi3ydxQSYSZFSAHfF09CHLK5/SAyWi75erpJInlEDF vBHa25cCYDsfLCSgdsqor6TFozzJIykBNfSS/p5LjyDLbO6GDvRCLXlFvNq2KjtS2p88 cmow== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@googlemail.com header.s=20161025 header.b=dYG8dTI6; 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=QUARANTINE dis=NONE) header.from=googlemail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 200si18241224wml.100.2017.12.30.08.44.18; Sat, 30 Dec 2017 08:44:19 -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=@googlemail.com header.s=20161025 header.b=dYG8dTI6; 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=QUARANTINE dis=NONE) header.from=googlemail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8F0A7689D56; Sat, 30 Dec 2017 18:44:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f44.google.com (mail-wm0-f44.google.com [74.125.82.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 43F10689D3E for ; Sat, 30 Dec 2017 18:43:56 +0200 (EET) Received: by mail-wm0-f44.google.com with SMTP id t8so52362599wmc.3 for ; Sat, 30 Dec 2017 08:44:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Yi/gOxnTxgrVHkDuaSosOn+3W7BzM3zOvWDi+alynCk=; b=dYG8dTI6dkUauPvnXHxrLt6DXPshvEq2aZhktGzeyQ+scnM9mNcq8rcm4nPJ3YSZRl SpYiVcAuYAo6rSUQUFQmckG9HT9/cuSnqFi2HW8rGygw4TbOxUrccsOL4IH9G0Co7NSj LBc7tZKgoddo3tkgvsej2VSnFkUMOsCBmYS2Y3NgLLl1kkL2WVzVLOnJiyjPwMnbU6r0 DdISTuH69/tM49mf5wDYkfhnXiQQU9QLoVZIg7MHXHDmVsVZcVEuCEErDgKmDc12TpFs hboTnnqt6q7BvowD+b8MO5L84Pyh+uMiHPQwCioo4KzHTJNmFgUmS4kw44EX3utwEGWW ux3w== 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=Yi/gOxnTxgrVHkDuaSosOn+3W7BzM3zOvWDi+alynCk=; b=JLdyx4UREQrp4W6PBu9gqYzlb03xXI77JZOYH5EDFX+Q5rESlBPCWIh92Qnb/8MbWi 8JsMnX31XdOhbg96XYuYkJ4Z3/7emiGESKXzt3Csi6U3QqTwviRK7HTxkvr3Nxobt6H6 HXdAmJ7s8oMYHdgV7Lfl1LFVyulE1GkYEIk23UbJR+iETMH7IW2rQnWh6nwE19Ei+eq+ wPq3xL7y8z8dROZEBxasb5Xky5aZIs1rzOdKEsoFrmBHHRqWW0ObZ3MgIraq9Ygj1jZk JHfOogqVtlmFMowMzUPdNeRbq4nFsPgHtYdxQa3T2R15eFQTFb+8Qp1jj4bdlRrRZpRq 0mHA== X-Gm-Message-State: AKGB3mKqDCq+Ahqk31+It45RRR7eFBdreIbPFMLj9LnsoSR6U17pjvg0 ef2ECUEWX3Yuk7LvgFDJvYMuVg== X-Received: by 10.80.241.218 with SMTP id y26mr49291958edl.120.1514652250714; Sat, 30 Dec 2017 08:44:10 -0800 (PST) Received: from debian.speedport.ip (p2003006CCD4EDC3038F642B42F0F0C81.dip0.t-ipconnect.de. [2003:6c:cd4e:dc30:38f6:42b4:2f0f:c81]) by smtp.googlemail.com with ESMTPSA id a52sm36328561eda.92.2017.12.30.08.44.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 30 Dec 2017 08:44:09 -0800 (PST) From: wm4 To: ffmpeg-devel@ffmpeg.org Date: Sat, 30 Dec 2017 17:44:16 +0100 Message-Id: <20171230164416.7638-1-nfxjfg@googlemail.com> X-Mailer: git-send-email 2.15.1 Subject: [FFmpeg-devel] [PATCH] tcp: properly return EOF 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: wm4 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" There is no POSIX error code for EOF - recv() signals EOF by simply returning 0. But libavformat recently changed its conventionts and requires an explicit AVERROR_EOF, or it might get into an endless retry loop, consuming 100% CPU while doing nothing. --- libavformat/tcp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/tcp.c b/libavformat/tcp.c index fef0729da6..8773493df1 100644 --- a/libavformat/tcp.c +++ b/libavformat/tcp.c @@ -225,6 +225,8 @@ static int tcp_read(URLContext *h, uint8_t *buf, int size) return ret; } ret = recv(s->fd, buf, size, 0); + if (ret == 0) + return AVERROR_EOF; return ret < 0 ? ff_neterrno() : ret; }