Dispose Listeners if they fail to start

This commit is contained in:
Stephen Halter 2015-06-12 17:01:48 -07:00
parent 7e125faa73
commit 5c6a53c491
1 changed files with 20 additions and 6 deletions

View File

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