From patchwork Tue Mar 20 19:42:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bodecs Bela X-Patchwork-Id: 8061 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp4290346jad; Tue, 20 Mar 2018 12:42:51 -0700 (PDT) X-Google-Smtp-Source: AG47ELuLhbP2wqEZK+5AHhjziPOXKQx046QX+/BJzdyYKyhK2X8D5PilCalgpwRmg7WeAg+v9dza X-Received: by 10.223.139.144 with SMTP id o16mr13656260wra.279.1521574971104; Tue, 20 Mar 2018 12:42:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521574971; cv=none; d=google.com; s=arc-20160816; b=SnW/VXIR4u7YRNU+/SA7fLR69neIvr71U4gVjgnSnIIZoDH2ackehmzsUylxTnHVuZ Wv5YMRx1Esy3Z29lwhtKmrk55a3GHLpClyvvZB4n7JGaVvuv2VfifE98l/3BaPWe4Pse uxOVtxv60L5CTcG/8Llutv8Ogffjo6L3ZEghSUVfrsiQWCrt6UITHpY8ymS7NaQxAcbm +drdDUXvpEjnl/lo9PE1hMdLArgnS8kiFJZJlUi/8zWmRpF00xRfxdPegdg8/sskDBnp g4ARkfafPoY/6+8mHm0AzvUTlmNduLLYswz5UexBZ8pQKSNvowsHcLog7cHomXI2o8Pf qsKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:mime-version:user-agent:date:message-id:from:to :delivered-to:arc-authentication-results; bh=hUghEi5glzwrY3dgec4Bg4AEHe1mhyz/SU+oDL7u3Mg=; b=C9Oo/9+C37sTNzkMEY28TtcyvALZv+OYckqc8+3pg7dbVBRDEm5+jOo8KZ4RxYZpFs 7/znnyASXbICIQwpXEAHK5hDBAWvNvtpFfnywlVBO3QkLYSA4Dj71inegUohfEhjbyFH agd/zNJ4o3pS9EYD0G7i5B9X4r6/8c3EMmktG0/yJ5eFU1WtKASTtKrxB4t7mrwdAEMt Ul3QBP/RuqzbSvVHD6weYheejf9LboLy8n8kWICZARDQH95wGO2lzH/AJhSoe+7+gz0G 0ZR7w68sNQ5MRCq+srbUWhn8rwilmXfxWfr/z0oPBx6tycWrtsmSwM0kiyzB7IqqZMnt HW6w== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id z2si1995955wrc.111.2018.03.20.12.42.48; Tue, 20 Mar 2018 12:42:51 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C62DD68A267; Tue, 20 Mar 2018 21:42:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-xsmtp2.externet.hu (mail-xsmtp2.externet.hu [212.40.96.153]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A61068A1B9 for ; Tue, 20 Mar 2018 21:42:26 +0200 (EET) Received: (qmail 1773 invoked from network); 20 Mar 2018 19:42:40 -0000 Received: from mail.officeline.hu (HELO ?10.0.0.10?) (bodecsb@vivanet.hu@217.173.32.91) by 0 with ESMTPA; 20 Mar 2018 19:42:40 -0000 To: FFmpeg development discussions and patches From: Bodecs Bela Message-ID: <251ebccc-cf32-3981-a43b-63e276f8ef85@vivanet.hu> Date: Tue, 20 Mar 2018 20:42:40 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 Content-Language: hu Subject: [FFmpeg-devel] [PATCH] avformat/unix: properly handling timeout at reading 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Dear All, avio rw_timeout handling in retry_transfer_wrapper() is based on returning EAGAIN from protocols' read function. unix_read function returns 0 in case of no data was read. It happens even if timeout it set for a valid value and thus rw_timeout handling can not work and wait for ever. This patch fixes the return value to AVERROR(EAGAIN) when recv() reads/returns zero value/data and timeout is set. please review this patch! thank you in advance, Bela Bodecs From f2fc0773500dd617a481ad67a195a811577f578a Mon Sep 17 00:00:00 2001 From: Bela Bodecs Date: Tue, 20 Mar 2018 20:38:22 +0100 Subject: [PATCH] avformat/unix: properly handling timeout at reading avio rw_timeout handling in retry_transfer_wrapper is based on returning EAGAIN from protocols' read function. unix_read function returns 0 in case of no data was read. It happens even if timeout it set for a valid value and thus rw_timeout handling can not work and wait for ever. This patch fixes the return value to AVERROR(EAGAIN) when recv() reads/returns zero value/data and timeout is set. Signed-off-by: Bela Bodecs --- libavformat/unix.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/unix.c b/libavformat/unix.c index 4f01d14..1c1eec4 100644 --- a/libavformat/unix.c +++ b/libavformat/unix.c @@ -111,6 +111,8 @@ static int unix_read(URLContext *h, uint8_t *buf, int size) return ret; } ret = recv(s->fd, buf, size, 0); + if (!ret && s->timeout > -1) + return AVERROR(EAGAIN); return ret < 0 ? ff_neterrno() : ret; }