From 977fd6ac09cf0490e50b8c4f456de1e89d76b5d8 Mon Sep 17 00:00:00 2001 From: nivalxer Date: Sat, 2 Dec 2023 03:47:53 +0800 Subject: [PATCH] Fix the issue of TLS handshake failure in .NET 8 environment. Signed-off-by: nivalxer --- .../Tls/TlsHandler.MediationStream.Net.cs | 11 +++++++++++ .../DotNetty.Buffers.Tests.csproj | 2 +- .../DotNetty.Codecs.Http.Tests.csproj | 2 +- .../DotNetty.Codecs.Mqtt.Tests.csproj | 2 +- .../DotNetty.Codecs.Protobuf.Tests.csproj | 2 +- .../DotNetty.Codecs.ProtocolBuffers.Tests.csproj | 2 +- .../DotNetty.Codecs.Redis.Tests.csproj | 2 +- .../DotNetty.Codecs.Tests.csproj | 2 +- .../DotNetty.Common.Tests.csproj | 2 +- .../Utilities/HashedWheelTimerTest.cs | 1 + .../DotNetty.Handlers.Tests.csproj | 2 +- test/DotNetty.Microbench/DotNetty.Microbench.csproj | 2 +- .../DotNetty.Tests.Common.csproj | 2 +- .../DotNetty.Tests.End2End.csproj | 2 +- .../DotNetty.Transport.Libuv.Tests.csproj | 2 +- .../DotNetty.Transport.Tests.Performance.csproj | 2 +- .../DotNetty.Transport.Tests.csproj | 2 +- 17 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/DotNetty.Handlers/Tls/TlsHandler.MediationStream.Net.cs b/src/DotNetty.Handlers/Tls/TlsHandler.MediationStream.Net.cs index b8e48ba..95323ea 100644 --- a/src/DotNetty.Handlers/Tls/TlsHandler.MediationStream.Net.cs +++ b/src/DotNetty.Handlers/Tls/TlsHandler.MediationStream.Net.cs @@ -69,6 +69,11 @@ namespace DotNetty.Handlers.Tls int read = this.ReadFromInput(buffer); return new ValueTask(read); } + //.NET8 sslStream will return 0 sometimes.like:https://github.com/dotnet/wcf/issues/5205 + if (buffer.IsEmpty) + { + return new ValueTask(0); + } Contract.Assert(this.sslOwnedMemory.IsEmpty); // take note of buffer - we will pass bytes there once available @@ -89,6 +94,12 @@ namespace DotNetty.Handlers.Tls return Task.FromResult(read); } + //.NET8 sslStream will return 0 sometimes.like:https://github.com/dotnet/wcf/issues/5205 + if (buffer.IsEmpty) + { + return Task.FromResult(0); + } + Contract.Assert(this.sslOwnedMemory.IsEmpty); // take note of buffer - we will pass bytes there once available this.sslOwnedMemory = buffer; diff --git a/test/DotNetty.Buffers.Tests/DotNetty.Buffers.Tests.csproj b/test/DotNetty.Buffers.Tests/DotNetty.Buffers.Tests.csproj index 23bf7ad..1b8a643 100644 --- a/test/DotNetty.Buffers.Tests/DotNetty.Buffers.Tests.csproj +++ b/test/DotNetty.Buffers.Tests/DotNetty.Buffers.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Codecs.Http.Tests/DotNetty.Codecs.Http.Tests.csproj b/test/DotNetty.Codecs.Http.Tests/DotNetty.Codecs.Http.Tests.csproj index 09e3e7b..ad22753 100644 --- a/test/DotNetty.Codecs.Http.Tests/DotNetty.Codecs.Http.Tests.csproj +++ b/test/DotNetty.Codecs.Http.Tests/DotNetty.Codecs.Http.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Codecs.Mqtt.Tests/DotNetty.Codecs.Mqtt.Tests.csproj b/test/DotNetty.Codecs.Mqtt.Tests/DotNetty.Codecs.Mqtt.Tests.csproj index cb1dada..7d2fef8 100644 --- a/test/DotNetty.Codecs.Mqtt.Tests/DotNetty.Codecs.Mqtt.Tests.csproj +++ b/test/DotNetty.Codecs.Mqtt.Tests/DotNetty.Codecs.Mqtt.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Codecs.Protobuf.Tests/DotNetty.Codecs.Protobuf.Tests.csproj b/test/DotNetty.Codecs.Protobuf.Tests/DotNetty.Codecs.Protobuf.Tests.csproj index 599180c..996840e 100644 --- a/test/DotNetty.Codecs.Protobuf.Tests/DotNetty.Codecs.Protobuf.Tests.csproj +++ b/test/DotNetty.Codecs.Protobuf.Tests/DotNetty.Codecs.Protobuf.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Codecs.ProtocolBuffers.Tests/DotNetty.Codecs.ProtocolBuffers.Tests.csproj b/test/DotNetty.Codecs.ProtocolBuffers.Tests/DotNetty.Codecs.ProtocolBuffers.Tests.csproj index a60ee8b..b460bf4 100644 --- a/test/DotNetty.Codecs.ProtocolBuffers.Tests/DotNetty.Codecs.ProtocolBuffers.Tests.csproj +++ b/test/DotNetty.Codecs.ProtocolBuffers.Tests/DotNetty.Codecs.ProtocolBuffers.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false Debug;Release;Package AnyCPU diff --git a/test/DotNetty.Codecs.Redis.Tests/DotNetty.Codecs.Redis.Tests.csproj b/test/DotNetty.Codecs.Redis.Tests/DotNetty.Codecs.Redis.Tests.csproj index bab73a4..e04d372 100644 --- a/test/DotNetty.Codecs.Redis.Tests/DotNetty.Codecs.Redis.Tests.csproj +++ b/test/DotNetty.Codecs.Redis.Tests/DotNetty.Codecs.Redis.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Codecs.Tests/DotNetty.Codecs.Tests.csproj b/test/DotNetty.Codecs.Tests/DotNetty.Codecs.Tests.csproj index 3e8b2cf..8a148c3 100644 --- a/test/DotNetty.Codecs.Tests/DotNetty.Codecs.Tests.csproj +++ b/test/DotNetty.Codecs.Tests/DotNetty.Codecs.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Common.Tests/DotNetty.Common.Tests.csproj b/test/DotNetty.Common.Tests/DotNetty.Common.Tests.csproj index e6de158..f59db99 100644 --- a/test/DotNetty.Common.Tests/DotNetty.Common.Tests.csproj +++ b/test/DotNetty.Common.Tests/DotNetty.Common.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Common.Tests/Utilities/HashedWheelTimerTest.cs b/test/DotNetty.Common.Tests/Utilities/HashedWheelTimerTest.cs index 22c52fe..e2c9a96 100644 --- a/test/DotNetty.Common.Tests/Utilities/HashedWheelTimerTest.cs +++ b/test/DotNetty.Common.Tests/Utilities/HashedWheelTimerTest.cs @@ -11,6 +11,7 @@ namespace DotNetty.Common.Tests.Utilities using DotNetty.Tests.Common; using Xunit; using Xunit.Abstractions; + using ITimer = DotNetty.Common.Utilities.ITimer; public class HashedWheelTimerTest : TestBase { diff --git a/test/DotNetty.Handlers.Tests/DotNetty.Handlers.Tests.csproj b/test/DotNetty.Handlers.Tests/DotNetty.Handlers.Tests.csproj index c394fdc..e2078c6 100644 --- a/test/DotNetty.Handlers.Tests/DotNetty.Handlers.Tests.csproj +++ b/test/DotNetty.Handlers.Tests/DotNetty.Handlers.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Microbench/DotNetty.Microbench.csproj b/test/DotNetty.Microbench/DotNetty.Microbench.csproj index 7f804cd..6dccc38 100644 --- a/test/DotNetty.Microbench/DotNetty.Microbench.csproj +++ b/test/DotNetty.Microbench/DotNetty.Microbench.csproj @@ -2,7 +2,7 @@ Exe true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Tests.Common/DotNetty.Tests.Common.csproj b/test/DotNetty.Tests.Common/DotNetty.Tests.Common.csproj index 8a28698..3957513 100644 --- a/test/DotNetty.Tests.Common/DotNetty.Tests.Common.csproj +++ b/test/DotNetty.Tests.Common/DotNetty.Tests.Common.csproj @@ -2,7 +2,7 @@ true false - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 ../../DotNetty.snk true Debug;Release;Package diff --git a/test/DotNetty.Tests.End2End/DotNetty.Tests.End2End.csproj b/test/DotNetty.Tests.End2End/DotNetty.Tests.End2End.csproj index 17b5107..adfdfd1 100644 --- a/test/DotNetty.Tests.End2End/DotNetty.Tests.End2End.csproj +++ b/test/DotNetty.Tests.End2End/DotNetty.Tests.End2End.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Transport.Libuv.Tests/DotNetty.Transport.Libuv.Tests.csproj b/test/DotNetty.Transport.Libuv.Tests/DotNetty.Transport.Libuv.Tests.csproj index 1a36813..c18b341 100644 --- a/test/DotNetty.Transport.Libuv.Tests/DotNetty.Transport.Libuv.Tests.csproj +++ b/test/DotNetty.Transport.Libuv.Tests/DotNetty.Transport.Libuv.Tests.csproj @@ -1,7 +1,7 @@ true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true diff --git a/test/DotNetty.Transport.Tests.Performance/DotNetty.Transport.Tests.Performance.csproj b/test/DotNetty.Transport.Tests.Performance/DotNetty.Transport.Tests.Performance.csproj index 92c6f96..4356c4d 100644 --- a/test/DotNetty.Transport.Tests.Performance/DotNetty.Transport.Tests.Performance.csproj +++ b/test/DotNetty.Transport.Tests.Performance/DotNetty.Transport.Tests.Performance.csproj @@ -4,7 +4,7 @@ true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false library diff --git a/test/DotNetty.Transport.Tests/DotNetty.Transport.Tests.csproj b/test/DotNetty.Transport.Tests/DotNetty.Transport.Tests.csproj index 530e594..490b457 100644 --- a/test/DotNetty.Transport.Tests/DotNetty.Transport.Tests.csproj +++ b/test/DotNetty.Transport.Tests/DotNetty.Transport.Tests.csproj @@ -1,7 +1,7 @@  true - netcoreapp3.1;net472;net5.0;net6.0 + netcoreapp3.1;net472;net5.0;net6.0;net8.0 false ../../DotNetty.snk true