diff --git a/src/Servers/HttpSys/src/NativeInterop/UrlGroup.cs b/src/Servers/HttpSys/src/NativeInterop/UrlGroup.cs index 0a5296d58705..ea6c65781300 100644 --- a/src/Servers/HttpSys/src/NativeInterop/UrlGroup.cs +++ b/src/Servers/HttpSys/src/NativeInterop/UrlGroup.cs @@ -20,6 +20,7 @@ internal class UrlGroup : IDisposable private ServerSession _serverSession; private bool _disposed; + private bool _created; internal unsafe UrlGroup(ServerSession serverSession, ILogger logger) { @@ -27,6 +28,7 @@ internal unsafe UrlGroup(ServerSession serverSession, ILogger logger) _logger = logger; ulong urlGroupId = 0; + _created = true; var statusCode = HttpApi.HttpCreateUrlGroup( _serverSession.Id.DangerousGetServerSessionId(), &urlGroupId, 0); @@ -44,6 +46,7 @@ internal unsafe UrlGroup(RequestQueue requestQueue, UrlPrefix url, ILogger logge _logger = logger; ulong urlGroupId = 0; + _created = false; var statusCode = HttpApi.HttpFindUrlGroupId( url.FullPrefix, requestQueue.Handle, &urlGroupId); @@ -141,14 +144,20 @@ public void Dispose() _disposed = true; - Debug.Assert(Id != 0, "HttpCloseUrlGroup called with invalid url group id"); + if (_created) + { - uint statusCode = HttpApi.HttpCloseUrlGroup(Id); + Debug.Assert(Id != 0, "HttpCloseUrlGroup called with invalid url group id"); + + uint statusCode = HttpApi.HttpCloseUrlGroup(Id); + + if (statusCode != UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS) + { + _logger.LogError(LoggerEventIds.CloseUrlGroupError, "HttpCloseUrlGroup; Result: {0}", statusCode); + } - if (statusCode != UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS) - { - _logger.LogError(LoggerEventIds.CloseUrlGroupError, "HttpCloseUrlGroup; Result: {0}" , statusCode); } + Id = 0; }