Fix for websocket message buffer not clearing between messages

This commit is contained in:
2025-10-12 17:46:11 +02:00
parent d6a43fc674
commit d5fda80fd1
2 changed files with 4 additions and 2 deletions
@@ -6,7 +6,7 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<Version>0.8.11</Version> <Version>0.8.13</Version>
<Authors>Alexandru Macocian</Authors> <Authors>Alexandru Macocian</Authors>
<PackageLicenseFile>LICENSE</PackageLicenseFile> <PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
@@ -151,6 +151,7 @@ public static class WebApplicationExtensions
while(webSocket.State == WebSocketState.Open && !cancellationToken.IsCancellationRequested) while(webSocket.State == WebSocketState.Open && !cancellationToken.IsCancellationRequested)
{ {
ms.Position = 0; ms.Position = 0;
var totalRead = 0;
do do
{ {
var byteArray = ArrayPool<byte>.Shared.Rent(4 * 1024); var byteArray = ArrayPool<byte>.Shared.Rent(4 * 1024);
@@ -158,6 +159,7 @@ public static class WebApplicationExtensions
try try
{ {
result = await webSocket.ReceiveAsync(buffer, cancellationToken); result = await webSocket.ReceiveAsync(buffer, cancellationToken);
totalRead += result.Count;
ms.Write(buffer[..result.Count].Span); ms.Write(buffer[..result.Count].Span);
} }
finally finally
@@ -171,7 +173,7 @@ public static class WebApplicationExtensions
return; return;
} }
await route.ExecuteAsync(result.MessageType, ms.GetReadOnlySequence(), cancellationToken); await route.ExecuteAsync(result.MessageType, ms.GetReadOnlySequence().Slice(0, totalRead), cancellationToken);
} }
} }