Refactored ListenerAsyncResult.cs
This commit is contained in:
parent
72867a26da
commit
713c258989
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user