From patchwork Tue Dec 10 01:08:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Forney X-Patchwork-Id: 16689 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 90402444F11 for ; Tue, 10 Dec 2019 03:08:17 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 653B668B720; Tue, 10 Dec 2019 03:08:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f68.google.com (mail-pj1-f68.google.com [209.85.216.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1CF6568B4C8 for ; Tue, 10 Dec 2019 03:08:11 +0200 (EET) Received: by mail-pj1-f68.google.com with SMTP id o11so6646309pjp.9 for ; Mon, 09 Dec 2019 17:08:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mforney-org.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=eJNI3ukS+yRIsoteO+DGgnssleSvQJpn4U7PqeSEDcM=; b=TMcl67oJ5rfBRdrnXOafpyEj0gysuQ8vkS5W2noKN6q8KeCDmMkm8C/jpq0Oo0Uev6 D8xdHOoDHfmlDB5JWGcoZBIZNpxL70GaI2/yLx0iYok8HFT/WHrykWASvHc6YAhPqQO5 yQwvMTP3qxQpq0Nv1hbF+tvfrmOV+HiDIrXB+JnLw80BF/IY/qmu1IquBzvcEqrIBGF+ 452GUWK2BxAiLGER3Yl14/+nXMXqWKiEpErxS5HwwbUCNgHoAM9H1QeTkByrjEwerLqO xyGMCz3leEa5dujaDCKg04DKOUtIXQa40ubzz8fW7FtI6T+nQsgoYO3DZbpJvQo8+bV9 W0hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=eJNI3ukS+yRIsoteO+DGgnssleSvQJpn4U7PqeSEDcM=; b=C+9SrDY3g8StrnQv9TV1UoSmPkDGRGCDlEr83P6Ia1r3I/qA6avusAI9NWuJEEp1ZP MaYOaFF/dXn53nInR/PMIgMoPXzz26VyEe3YY0JvhKM+xkznDuILveCoPBik71TIs072 yWUBYBwaD5AaREO3Suvl/J3hRzv8RXwqcpNcP9jDIt7rhkZZPHwkLd2GEZ5D/N22C3zZ YX067e8ZU3YnMFyZeFpXx34pMBjNYBrb0x64f6DQ2ZufojHzUmTWdqailw7uxIAj+yzc XFDBXYGhDkeK4FsXBaBpQ8jRL3hLgX2d/RljYzdhTnd3K168aqvoekticSjyfWtLLCE3 YMww== X-Gm-Message-State: APjAAAUN84RSwZXrbP0FIIhrCHL88wkBCW9xgHpKiyfrjPsTS/+NUbQN jRjy+4VkB7fjQ+acVIDTwUVE/G7GWBE= X-Google-Smtp-Source: APXvYqz0sWhQJID8+ooxZpBIM5cgOpTw2WTTqOK+oet65TX4cFpFfCeX3c+2e1wG1Zyqw93/e4tDcg== X-Received: by 2002:a17:90b:150:: with SMTP id em16mr2222759pjb.123.1575940088890; Mon, 09 Dec 2019 17:08:08 -0800 (PST) Received: from localhost ([2601:647:5180:4570::18a0]) by smtp.gmail.com with ESMTPSA id 8sm686706pfu.21.2019.12.09.17.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Dec 2019 17:08:08 -0800 (PST) From: Michael Forney To: ffmpeg-devel@ffmpeg.org, sfan5@live.de Date: Mon, 9 Dec 2019 17:08:07 -0800 Message-Id: <20191210010807.26609-1-mforney@mforney.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavformat/tls_libtls: handle TLS_WANT_POLLIN and TLS_WANT_POLLOUT return values 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" These values may be returned from libtls (even in the case of blocking file descriptors) when we need to read/write more TLS record data in order to read/write application data. The URLProtocol documentation says AVERROR(EAGAIN) should be returned in these cases. Signed-off-by: Michael Forney --- libavformat/tls_libtls.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavformat/tls_libtls.c b/libavformat/tls_libtls.c index ba83b56ffe..286454e452 100644 --- a/libavformat/tls_libtls.c +++ b/libavformat/tls_libtls.c @@ -159,6 +159,8 @@ static int ff_tls_read(URLContext *h, uint8_t *buf, int size) return ret; else if (ret == 0) return AVERROR_EOF; + else if (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT) + return AVERROR(EAGAIN); av_log(h, AV_LOG_ERROR, "%s\n", tls_error(p->ctx)); return AVERROR(EIO); } @@ -172,6 +174,8 @@ static int ff_tls_write(URLContext *h, const uint8_t *buf, int size) return ret; else if (ret == 0) return AVERROR_EOF; + else if (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT) + return AVERROR(EAGAIN); av_log(h, AV_LOG_ERROR, "%s\n", tls_error(p->ctx)); return AVERROR(EIO); }