Dispose Listeners if they fail to start

This commit is contained in:
Stephen Halter 2015-06-12 17:01:48 -07:00 committed by Brennan
parent a992c78548
commit 1592459a0b
1 changed files with 20 additions and 6 deletions

View File

@ -91,19 +91,33 @@ namespace Microsoft.AspNet.Server.Kestrel
public IDisposable CreateServer(string scheme, string host, int port, Func<Frame, Task> application)
{
var listeners = new List<Listener>();
foreach (var thread in Threads)
try
{
var listener = new Listener(Memory);
listener.StartAsync(scheme, host, port, thread, application).Wait();
listeners.Add(listener);
foreach (var thread in Threads)
{
var listener = new Listener(Memory);
listeners.Add(listener);
listener.StartAsync(scheme, host, port, thread, application).Wait();
}
return new Disposable(() =>
{
foreach (var listener in listeners)
{
listener.Dispose();
}
});
}
return new Disposable(() =>
catch
{
foreach (var listener in listeners)
{
listener.Dispose();
}
});
throw;
}
}
}
}