From 02432e5109b0038f096427721d28e06defe5e7b4 Mon Sep 17 00:00:00 2001 From: JKorf Date: Tue, 16 Jul 2024 15:54:11 +0200 Subject: [PATCH] Added small performance improvements in SystemTextJsonMessageAccessor --- .../SystemTextJson/SystemTextJsonMessageAccessor.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs index f0ee044..9bd4439 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs @@ -242,6 +242,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson { _stream?.Dispose(); _stream = null; + _document?.Dispose(); _document = null; } @@ -261,6 +262,14 @@ namespace CryptoExchange.Net.Converters.SystemTextJson try { + var firstByte = data.Span[0]; + if (firstByte != 0x7b && firstByte != 0x5b) + { + // Value doesn't start with `{` or `[`, prevent deserialization attempt as it's slow + IsJson = false; + return new CallResult(new ServerError("Not a json value")); + } + _document = JsonDocument.Parse(data); IsJson = true; return new CallResult(null); @@ -289,6 +298,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson public override void Clear() { _bytes = null; + _document?.Dispose(); _document = null; } }