From ca21e5bd7a2a6f9a7d60e14695e0a8bd50d47029 Mon Sep 17 00:00:00 2001 From: Anna Date: Wed, 24 Aug 2022 20:54:19 -0400 Subject: [PATCH] fix: go back to simple message handling --- client/ExtraChat/Ext.cs | 36 ++++++++++------------------- client/ExtraChat/ExtraChat.csproj | 2 +- client/ExtraChat/packages.lock.json | 6 ++--- 3 files changed, 16 insertions(+), 28 deletions(-) mode change 100644 => 100755 client/ExtraChat/packages.lock.json diff --git a/client/ExtraChat/Ext.cs b/client/ExtraChat/Ext.cs index 7744de9..983c6f3 100644 --- a/client/ExtraChat/Ext.cs +++ b/client/ExtraChat/Ext.cs @@ -1,5 +1,4 @@ -using System.Buffers; -using System.Net.WebSockets; +using System.Net.WebSockets; using ExtraChat.Protocol; using MessagePack; @@ -17,30 +16,19 @@ public static class Ext { } public static async Task ReceiveMessage(this ClientWebSocket client) { - const int maxSize = 1_048_576; - // rent a 1 MiB byte array from the shared runtime pool - var bytes = ArrayPool.Shared.Rent(maxSize); + var bytes = new ArraySegment(new byte[2048]); - try { - WebSocketReceiveResult result; - var i = 0; - do { - result = await client.ReceiveAsync(bytes[i..maxSize], CancellationToken.None); - i += result.Count; + WebSocketReceiveResult result; + var i = 0; + do { + result = await client.ReceiveAsync(bytes[i..], CancellationToken.None); + i += result.Count; - // break if we've filled up the buffer, even if message isn't complete - if (i == maxSize) { - break; - } + if (i >= bytes.Count) { + throw new Exception(); + } + } while (!result.EndOfMessage); - if (i > maxSize) { - throw new Exception("read too many bytes for one message"); - } - } while (!result.EndOfMessage); - - return MessagePackSerializer.Deserialize(bytes); - } finally { - ArrayPool.Shared.Return(bytes); - } + return MessagePackSerializer.Deserialize(bytes[..i]); } } diff --git a/client/ExtraChat/ExtraChat.csproj b/client/ExtraChat/ExtraChat.csproj index 6033ee1..2b00c01 100644 --- a/client/ExtraChat/ExtraChat.csproj +++ b/client/ExtraChat/ExtraChat.csproj @@ -55,7 +55,7 @@ - + diff --git a/client/ExtraChat/packages.lock.json b/client/ExtraChat/packages.lock.json old mode 100644 new mode 100755 index 795cff6..393c8cc --- a/client/ExtraChat/packages.lock.json +++ b/client/ExtraChat/packages.lock.json @@ -13,9 +13,9 @@ }, "Dalamud.ContextMenu": { "type": "Direct", - "requested": "[1.1.1, )", - "resolved": "1.1.1", - "contentHash": "YwqdkjEQKHW7VGGmWxhBwMpuN9twsLaO6Lm05uQ1LosN2iEKNLrAMB8LlUy8qqCojlrRnhiwece/Z6Ppvfgi6g==" + "requested": "[1.2.1, )", + "resolved": "1.2.1", + "contentHash": "RiBkn1OYRTnVbfUGYolLBE8MOeXjok+JiZaryb27oGa7YARCTu0XgUzkRiCglujknsHOn5kAaXsT3TUJmqMigg==" }, "DalamudPackager": { "type": "Direct",