diff --git a/websocket-sharp/Net/HttpListener.cs b/websocket-sharp/Net/HttpListener.cs index b7de73f0..7c0be537 100644 --- a/websocket-sharp/Net/HttpListener.cs +++ b/websocket-sharp/Net/HttpListener.cs @@ -455,19 +455,23 @@ namespace WebSocketSharp.Net private void close (bool force) { - if (_listening) { - _listening = false; + if (!_listening) { + _disposed = true; - cleanupContextQueue (force); - cleanupContextRegistry (); - - var name = GetType ().ToString (); - var ex = new ObjectDisposedException (name); - cleanupWaitQueue (ex); - - EndPointManager.RemoveListener (this); + return; } + _listening = false; + + cleanupContextQueue (force); + cleanupContextRegistry (); + + var name = GetType ().ToString (); + var ex = new ObjectDisposedException (name); + cleanupWaitQueue (ex); + + EndPointManager.RemoveListener (this); + _disposed = true; }