aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2024-01-09 20:30:06 -0500
committerLibravatar vnugent <public@vaughnnugent.com>2024-01-09 20:30:06 -0500
commitddead3ab60254fcc1c8029715e094480da51dcd0 (patch)
treec9d6fd903a1d68da6b953f425b72ad2a7d2d2d26
parent50885f7cd7e0519c96b0c95fce9ba6bf69502cf7 (diff)
some sanity checks
-rw-r--r--lib/Net.Http/src/Core/Compression/ManagedHttpCompressor.cs18
-rw-r--r--lib/Net.Http/src/Core/Response/ResponseWriter.cs9
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)]