From 5c6a53c4911cddf05e02a5f97c5cf06fcae3eb90 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Fri, 12 Jun 2015 17:01:48 -0700 Subject: [PATCH] Dispose Listeners if they fail to start --- .../KestrelEngine.cs | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.AspNet.Server.Kestrel/KestrelEngine.cs b/src/Microsoft.AspNet.Server.Kestrel/KestrelEngine.cs index ae0c87590d..21b4df4523 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/KestrelEngine.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/KestrelEngine.cs @@ -91,19 +91,33 @@ namespace Microsoft.AspNet.Server.Kestrel public IDisposable CreateServer(string scheme, string host, int port, Func application) { var listeners = new List(); - 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; + } } } }