From 53097b2fbcd4e5601a10c0f6eda991a8c4f281ac Mon Sep 17 00:00:00 2001 From: Maxim Kim Date: Sun, 19 Sep 2021 22:36:29 -0700 Subject: [PATCH 1/2] translate empty incoming buffer to empty outgoing buffer --- src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs b/src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs index 786a039f..c5418159 100644 --- a/src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs +++ b/src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs @@ -38,6 +38,8 @@ namespace DotNetty.Handlers.Tls partial class TlsHandler { + static readonly byte[] ZeroBuf = new byte[0]; + private IPromise _lastContextWritePromise; private volatile int v_wrapDataSize = TlsUtils.MAX_PLAINTEXT_LENGTH; @@ -169,6 +171,14 @@ private void Wrap(IChannelHandlerContext context) } _lastContextWritePromise = promise; _ = buf.ReadBytes(_sslStream, readableBytes); // this leads to FinishWrap being called 0+ times + if (buf.IsReadable()) + { + _ = buf.ReadBytes(_sslStream, readableBytes); // this leads to FinishWrap being called 0+ times + } + else if (promise != null) + { + FinishWrap(ZeroBuf, 0, 0, promise); + } } catch (Exception exc) { From b2218f19c387b9558c18711ba84f99a37efd2da7 Mon Sep 17 00:00:00 2001 From: Maxim Kim Date: Fri, 20 May 2022 14:42:47 -0700 Subject: [PATCH 2/2] remove duplicate readbyte --- src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs b/src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs index c5418159..4d8fa6e9 100644 --- a/src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs +++ b/src/DotNetty.Handlers/Tls/TlsHandler.Writer.cs @@ -170,7 +170,6 @@ private void Wrap(IChannelHandlerContext context) composite.Release(); } _lastContextWritePromise = promise; - _ = buf.ReadBytes(_sslStream, readableBytes); // this leads to FinishWrap being called 0+ times if (buf.IsReadable()) { _ = buf.ReadBytes(_sslStream, readableBytes); // this leads to FinishWrap being called 0+ times