diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Net.Http/src/Core/Compression/ManagedHttpCompressor.cs | 18 | ||||
-rw-r--r-- | lib/Net.Http/src/Core/Response/ResponseWriter.cs | 9 |
2 files changed, 25 insertions, 2 deletions
diff --git a/lib/Net.Http/src/Core/Compression/ManagedHttpCompressor.cs b/lib/Net.Http/src/Core/Compression/ManagedHttpCompressor.cs index 34e59ac..fbb17c2 100644 --- a/lib/Net.Http/src/Core/Compression/ManagedHttpCompressor.cs +++ b/lib/Net.Http/src/Core/Compression/ManagedHttpCompressor.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2023 Vaughn Nugent +* Copyright (c) 2024 Vaughn Nugent * * Library: VNLib * Package: VNLib.Net.Http @@ -23,6 +23,7 @@ */ using System; +using System.Diagnostics; namespace VNLib.Net.Http.Core.Compression { @@ -33,6 +34,7 @@ namespace VNLib.Net.Http.Core.Compression public ManagedHttpCompressor(IHttpCompressorManager provider) { + Debug.Assert(provider != null, "Expected non-null provider"); _provider = provider; } @@ -52,6 +54,10 @@ namespace VNLib.Net.Http.Core.Compression ///<inheritdoc/> public CompressionResult CompressBlock(ReadOnlyMemory<byte> input, Memory<byte> output) { + Debug.Assert(initialized); + Debug.Assert(_compressor != null); + Debug.Assert(!output.IsEmpty, "Expected non-zero output buffer"); + //Compress the block return _provider.CompressBlock(_compressor!, input, output); } @@ -59,6 +65,10 @@ namespace VNLib.Net.Http.Core.Compression ///<inheritdoc/> public int Flush(Memory<byte> output) { + Debug.Assert(initialized); + Debug.Assert(_compressor != null); + Debug.Assert(!output.IsEmpty, "Expected non-zero output buffer"); + return _provider.Flush(_compressor!, output); } @@ -68,6 +78,8 @@ namespace VNLib.Net.Http.Core.Compression //Defer alloc the compressor _compressor ??= _provider.AllocCompressor(); + Debug.Assert(_compressor != null); + //Init the compressor and get the block size BlockSize = _provider.InitCompressor(_compressor, compMethod); @@ -80,7 +92,9 @@ namespace VNLib.Net.Http.Core.Compression //Deinit compressor if initialized if (initialized) { - _provider.DeinitCompressor(_compressor!); + Debug.Assert(_compressor != null, "Compressor was initialized, exepcted a non null instance"); + + _provider.DeinitCompressor(_compressor); initialized = false; } } diff --git a/lib/Net.Http/src/Core/Response/ResponseWriter.cs b/lib/Net.Http/src/Core/Response/ResponseWriter.cs index a030784..de46dce 100644 --- a/lib/Net.Http/src/Core/Response/ResponseWriter.cs +++ b/lib/Net.Http/src/Core/Response/ResponseWriter.cs @@ -265,6 +265,7 @@ namespace VNLib.Net.Http.Core.Response //Compress the trimmed block CompressionResult res = comp.CompressBlock(readSegment, output); + ValidateCompressionResult(in res); //Commit input bytes reader.Advance(res.BytesRead); @@ -280,6 +281,7 @@ namespace VNLib.Net.Http.Core.Response //Compress the trimmed block CompressionResult res = comp.CompressBlock(reader.Window, output); + ValidateCompressionResult(in res); //Commit input bytes reader.Advance(res.BytesRead); @@ -287,6 +289,13 @@ namespace VNLib.Net.Http.Core.Response return writer.Advance(res.BytesWritten) == 0; } + [Conditional("DEBUG")] + private static void ValidateCompressionResult(in CompressionResult result) + { + Debug.Assert(result.BytesRead > -1, "Compression result returned a negative bytes read value"); + Debug.Assert(result.BytesWritten > -1, "Compression result returned a negative bytes written value"); + } + #pragma warning restore CA2007 // Consider calling ConfigureAwait on the awaited task [MethodImpl(MethodImplOptions.AggressiveInlining)] |