wasSharpNET

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 16  →  ?path2? @ 15
/Network/HTTP/HTTPServer.cs
@@ -22,6 +22,9 @@
 
private int processedRequests;
 
private AutoResetEvent StopServerEvent = new AutoResetEvent(false);
private AutoResetEvent ServerStoppedEvent = new AutoResetEvent(false);
 
public AuthenticationSchemes AuthenticationSchemes
{
get
@@ -43,7 +46,6 @@
return false;
 
// Add all prefixes.
HTTPListener.Prefixes.Clear();
foreach (var prefix in prefixes)
{
HTTPListener.Prefixes.Add(prefix);
@@ -58,7 +60,9 @@
 
public bool Stop()
{
HTTPListener.Stop();
StopServerEvent.Set();
ServerStoppedEvent.WaitOne();
HTTPListener.Prefixes.Clear();
return true;
}
 
@@ -69,8 +73,16 @@
while (callbackState.Listener.IsListening)
{
callbackState.Listener.BeginGetContext(ContextCallback, callbackState);
callbackState.ContextRetrieved.WaitOne();
var n = WaitHandle.WaitAny(new WaitHandle[] { callbackState.ContextRetrieved, StopServerEvent });
 
if (n.Equals(1))
{
callbackState.Listener.Stop();
break;
}
}
 
ServerStoppedEvent.Set();
}
 
public abstract void ProcessHTTPContext(HttpListenerContext context);
@@ -113,7 +125,13 @@
public void Dispose()
{
Stop();
 
HTTPListener = null;
StopServerEvent?.Dispose();
ServerStoppedEvent?.Dispose();
 
StopServerEvent = null;
ServerStoppedEvent = null;
}
 
private class HTTPServerCallbackState