diff --git a/websocket-sharp/Net/ListenerAsyncResult.cs b/websocket-sharp/Net/ListenerAsyncResult.cs index b1e1025c..6b60fc5e 100644 --- a/websocket-sharp/Net/ListenerAsyncResult.cs +++ b/websocket-sharp/Net/ListenerAsyncResult.cs @@ -50,10 +50,10 @@ namespace WebSocketSharp.Net private bool _completed; private HttpListenerContext _context; private Exception _exception; - private ManualResetEvent _waitHandle; private object _state; private object _sync; private bool _syncCompleted; + private ManualResetEvent _waitHandle; #endregion @@ -105,20 +105,6 @@ namespace WebSocketSharp.Net #endregion - #region Private Methods - - private static void invokeCallback (object state) - { - try { - var ares = (ListenerAsyncResult) state; - ares._callback (ares); - } - catch { - } - } - - #endregion - #region Internal Methods internal void Complete (Exception exception) @@ -133,7 +119,15 @@ namespace WebSocketSharp.Net _waitHandle.Set (); if (_callback != null) - ThreadPool.UnsafeQueueUserWorkItem (invokeCallback, this); + ThreadPool.UnsafeQueueUserWorkItem ( + state => { + try { + _callback (this); + } + catch { + } + }, + null); } } @@ -145,17 +139,17 @@ namespace WebSocketSharp.Net internal void Complete (HttpListenerContext context, bool syncCompleted) { var listener = context.Listener; - var scheme = listener.SelectAuthenticationScheme (context); - if (scheme == AuthenticationSchemes.None) { + var schm = listener.SelectAuthenticationScheme (context); + if (schm == AuthenticationSchemes.None) { context.Response.Close (HttpStatusCode.Forbidden); listener.BeginGetContext (this); return; } - var header = context.Request.Headers ["Authorization"]; - if (scheme == AuthenticationSchemes.Basic && - (header == null || !header.StartsWith ("basic", StringComparison.OrdinalIgnoreCase))) { + var res = context.Request.Headers["Authorization"]; + if (schm == AuthenticationSchemes.Basic && + (res == null || !res.StartsWith ("basic", StringComparison.OrdinalIgnoreCase))) { context.Response.CloseWithAuthChallenge ( AuthenticationChallenge.CreateBasicChallenge (listener.Realm).ToBasicString ()); @@ -163,8 +157,8 @@ namespace WebSocketSharp.Net return; } - if (scheme == AuthenticationSchemes.Digest && - (header == null || !header.StartsWith ("digest", StringComparison.OrdinalIgnoreCase))) { + if (schm == AuthenticationSchemes.Digest && + (res == null || !res.StartsWith ("digest", StringComparison.OrdinalIgnoreCase))) { context.Response.CloseWithAuthChallenge ( AuthenticationChallenge.CreateDigestChallenge (listener.Realm).ToDigestString ()); @@ -181,7 +175,15 @@ namespace WebSocketSharp.Net _waitHandle.Set (); if (_callback != null) - ThreadPool.UnsafeQueueUserWorkItem (invokeCallback, this); + ThreadPool.UnsafeQueueUserWorkItem ( + state => { + try { + _callback (this); + } + catch { + } + }, + null); } }