Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
{
"version": "0.1.0",
"version": "2.0.0",
"command": "dotnet",
"isShellCommand": true,
"args": [],
"tasks": [
{
"taskName": "msbuild",
"label": "msbuild",
"type": "shell",
"command": "dotnet",
"args": [
"msbuild",
"dotnetty.sln"
],
"isBuildCommand": true,
"problemMatcher": "$msCompile"
"problemMatcher": "$msCompile",
"group": {
"kind": "build",
"isDefault": false
}
}
]
}
6 changes: 6 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
#### 0.8.0 January 8, 2026
- Fix race condition in TlsHandler when negotiating client certificate (#602)
- Deferred processing of pending data packets to ensure upstream handlers receive TlsHandshakeCompletionEvent before application data
- Removed deprecated target frameworks: netcoreapp3.1 and net5.0
- Added net8.0 target framework support

#### 0.7.6 February 9, 2024
- Fix TLS handshake for net8

Expand Down
4 changes: 2 additions & 2 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ var output = Directory("build");
var outputBinaries = output + Directory("binaries");
var outputBinariesNet = outputBinaries + Directory("net472");
var outputBinariesNetStandard = outputBinaries + Directory("netstandard2.0");
var outputBinariesNet5 = outputBinaries + Directory("net5.0");
var outputBinariesNet6 = outputBinaries + Directory("net6.0");
var outputBinariesNet8 = outputBinaries + Directory("net8.0");
var outputPackages = output + Directory("packages");
var outputNuGet = output + Directory("nuget");
var outputPerfResults = Directory("perfResults");
Expand All @@ -40,7 +40,7 @@ Task("Clean")
CleanDirectories(new DirectoryPath[] {
output, outputBinaries, outputPackages, outputNuGet,
outputBinariesNet, outputBinariesNetStandard,
outputBinariesNet5, outputBinariesNet6
outputBinariesNet6, outputBinariesNet8
});

if(!skipClean) {
Expand Down
3 changes: 1 addition & 2 deletions examples/Discard.Client/Discard.Client.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Discard.Server/Discard.Server.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Echo.Client/Echo.Client.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Echo.Server/Echo.Server.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Examples.Common/Examples.Common.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netstandard2.0' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Factorial.Client/Factorial.Client.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Factorial.Server/Factorial.Server.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Factorial/Factorial.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netstandard2.0' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/HttpServer/HttpServer.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<ServerGarbageCollection>true</ServerGarbageCollection>
<Configurations>Debug;Release;Package</Configurations>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/SecureChat.Client/SecureChat.Client.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/SecureChat.Server/SecureChat.Server.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Telnet.Client/Telnet.Client.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/Telnet.Server/Telnet.Server.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/WebSockets.Client/WebSockets.Client.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Package</Configurations>
<Platforms>AnyCPU</Platforms>
Expand Down
3 changes: 1 addition & 2 deletions examples/WebSockets.Server/WebSockets.Server.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net472;net5.0;net6.0</TargetFrameworks>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">2.0.3</NetStandardImplicitPackageVersion>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<ServerGarbageCollection>true</ServerGarbageCollection>
<Configurations>Debug;Release;Package</Configurations>
Expand Down
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<GeneratePackageOnBuild Condition="'$(Configuration)'=='Package'">True</GeneratePackageOnBuild>
<IncludeSymbols>true</IncludeSymbols>

<PackageVersion>0.7.6</PackageVersion>
<PackageVersion>0.8.0</PackageVersion>
<Version>$(PackageVersion)</Version>
</PropertyGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/DotNetty.Buffers/DotNetty.Buffers.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<Description>Buffer management in DotNetty</Description>
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
Expand Down
2 changes: 1 addition & 1 deletion src/DotNetty.Codecs.Http/DotNetty.Codecs.Http.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Codecs.Http</PackageId>
<Description>Http codec for DotNetty</Description>
Expand Down
2 changes: 1 addition & 1 deletion src/DotNetty.Codecs.Mqtt/DotNetty.Codecs.Mqtt.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Codecs.Mqtt</PackageId>
<Description>MQTT codec for DotNetty</Description>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Codecs.Protobuf</PackageId>
<Description>Protobuf Proto3 codec for DotNetty</Description>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Codecs.ProtocolBuffers</PackageId>
<Description>ProtocolBuffers Proto2 codec for DotNetty</Description>
Expand Down
2 changes: 1 addition & 1 deletion src/DotNetty.Codecs.Redis/DotNetty.Codecs.Redis.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Codecs.Redis</PackageId>
<Description>Redis codec for DotNetty</Description>
Expand Down
2 changes: 1 addition & 1 deletion src/DotNetty.Codecs/DotNetty.Codecs.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Codecs</PackageId>
<Description>General purpose codecs for DotNetty</Description>
Expand Down
2 changes: 1 addition & 1 deletion src/DotNetty.Common/DotNetty.Common.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Common</PackageId>
<Description>DotNetty common routines</Description>
Expand Down
2 changes: 1 addition & 1 deletion src/DotNetty.Handlers/DotNetty.Handlers.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Handlers</PackageId>
<Description>Application handlers for DotNetty</Description>
Expand Down
60 changes: 43 additions & 17 deletions src/DotNetty.Handlers/Tls/TlsHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -142,25 +142,14 @@ static void HandleHandshakeCompletedInternal(Task task, TlsHandler self)

// Due to possible async execution of HandleHandshakeCompleted continuation, we need to
// Unwrap any pending app data packets in case, when read completed and no more messages in the channel.
//
// IMPORTANT: We defer processing to the next event loop iteration to ensure that upstream handlers
// have processed the TlsHandshakeCompletionEvent.Success before receiving application data.
// This fixes a race condition where application data (e.g., MQTT CONNECT) arrives in the same
// TCP segment as the final handshake message, and gets processed before handlers are ready.
if (self.pendingDataPackets != null && self.pendingDataPackets.Count > 0)
{
ThreadLocalObjectList output = ThreadLocalObjectList.NewInstance();
try
{
self.Unwrap(self.capturedContext, Unpooled.Empty, 0, 0, new List<(int packetLength, byte packetContentType)>(0), output);
for (int i = 0; i < output.Count; i++)
{
self.capturedContext.FireChannelRead(output[i]);
}
}
catch (Exception ex)
{
throw new DecoderException(ex);
}
finally
{
output.Return();
}
self.capturedContext.Executor.Execute(() => self.ProcessPendingDataPackets());
}

if (oldState.Has(TlsHandlerState.ReadRequestedBeforeAuthenticated) && !self.capturedContext.Channel.Configuration.AutoRead)
Expand Down Expand Up @@ -558,6 +547,43 @@ Task<int> ReadFromSslStreamAsync(IByteBuffer outputBuffer, int outputBufferLengt
return this.sslStream.ReadAsync(outlet.Array, outlet.Offset, outlet.Count);
}

/// <summary>
/// Process pending data packets that arrived before handshake completion was signaled.
/// This is called on the next event loop iteration to ensure upstream handlers have
/// processed the TlsHandshakeCompletionEvent before receiving application data.
/// </summary>
void ProcessPendingDataPackets()
{
if (this.pendingDataPackets == null || this.pendingDataPackets.Count == 0)
{
return;
}

ThreadLocalObjectList output = ThreadLocalObjectList.NewInstance();
try
{
this.Unwrap(this.capturedContext, Unpooled.Empty, 0, 0, new List<(int packetLength, byte packetContentType)>(0), output);
for (int i = 0; i < output.Count; i++)
{
this.capturedContext.FireChannelRead(output[i]);
}

// Signal read complete after processing pending packets
if (output.Count > 0)
{
this.capturedContext.FireChannelReadComplete();
}
}
catch (Exception ex)
{
this.HandleFailure(ex);
}
finally
{
output.Return();
}
}

public override void Read(IChannelHandlerContext context)
{
TlsHandlerState oldState = this.state;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup Label="NuGet">
<TargetFrameworks>netstandard2.0;net472;net5.0;net6.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net472;net6.0;net8.0</TargetFrameworks>
<IsPackable>true</IsPackable>
<PackageId>DotNetty.Transport.Libuv</PackageId>
<Description>Libuv transport model in DotNetty</Description>
Expand Down
Loading