From 67ed24896a312712af17ad9df4f1f2bf24688448 Mon Sep 17 00:00:00 2001 From: Cesar Blum Silveira Date: Mon, 14 Dec 2015 19:42:00 -0800 Subject: [PATCH] Dispose socket on Accept() error. --- src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs | 6 +++--- .../Http/PipeListenerPrimary.cs | 6 +++--- src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs | 9 +++++---- .../Http/TcpListenerPrimary.cs | 9 +++++---- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs index b3a15c1fe3..c7e545a549 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs @@ -37,19 +37,19 @@ namespace Microsoft.AspNet.Server.Kestrel.Http protected override void OnConnection(UvStreamHandle listenSocket, int status) { var acceptSocket = new UvPipeHandle(Log); - acceptSocket.Init(Thread.Loop, false); try { + acceptSocket.Init(Thread.Loop, false); listenSocket.Accept(acceptSocket); + DispatchConnection(acceptSocket); } catch (UvException ex) { Log.LogError("PipeListener.OnConnection", ex); + acceptSocket.Dispose(); return; } - - DispatchConnection(acceptSocket); } } } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListenerPrimary.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListenerPrimary.cs index 7f15ccb2c0..7d907e20c2 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListenerPrimary.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListenerPrimary.cs @@ -37,19 +37,19 @@ namespace Microsoft.AspNet.Server.Kestrel.Http protected override void OnConnection(UvStreamHandle listenSocket, int status) { var acceptSocket = new UvPipeHandle(Log); - acceptSocket.Init(Thread.Loop, false); try { + acceptSocket.Init(Thread.Loop, false); listenSocket.Accept(acceptSocket); + DispatchConnection(acceptSocket); } catch (UvException ex) { Log.LogError("ListenerPrimary.OnConnection", ex); + acceptSocket.Dispose(); return; } - - DispatchConnection(acceptSocket); } } } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs index 45769cc074..61f4a4fe0e 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs @@ -37,20 +37,21 @@ namespace Microsoft.AspNet.Server.Kestrel.Http protected override void OnConnection(UvStreamHandle listenSocket, int status) { var acceptSocket = new UvTcpHandle(Log); - acceptSocket.Init(Thread.Loop, Thread.QueueCloseHandle); - acceptSocket.NoDelay(NoDelay); try { + acceptSocket.Init(Thread.Loop, Thread.QueueCloseHandle); + acceptSocket.NoDelay(NoDelay); listenSocket.Accept(acceptSocket); + DispatchConnection(acceptSocket); + } catch (UvException ex) { Log.LogError("TcpListener.OnConnection", ex); + acceptSocket.Dispose(); return; } - - DispatchConnection(acceptSocket); } } } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListenerPrimary.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListenerPrimary.cs index 2116ed1ab0..98283232cd 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListenerPrimary.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListenerPrimary.cs @@ -39,20 +39,21 @@ namespace Microsoft.AspNet.Server.Kestrel.Http protected override void OnConnection(UvStreamHandle listenSocket, int status) { var acceptSocket = new UvTcpHandle(Log); - acceptSocket.Init(Thread.Loop, Thread.QueueCloseHandle); - acceptSocket.NoDelay(NoDelay); try { + acceptSocket.Init(Thread.Loop, Thread.QueueCloseHandle); + acceptSocket.NoDelay(NoDelay); listenSocket.Accept(acceptSocket); + DispatchConnection(acceptSocket); + } catch (UvException ex) { Log.LogError("TcpListenerPrimary.OnConnection", ex); + acceptSocket.Dispose(); return; } - - DispatchConnection(acceptSocket); } } }