From 4bc74139a4420bca40288eb7d3d7b9d0c7608abf Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 15 Jul 2020 19:15:11 +0100 Subject: [PATCH] dispose prematurely discon sockets --- .../HttpServer/OSHttpServer/HttpListener.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpListener.cs b/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpListener.cs index d53e89b6f7..1349bd08ec 100644 --- a/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpListener.cs +++ b/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpListener.cs @@ -140,6 +140,11 @@ namespace OSHttpServer m_listener.BeginAcceptSocket(OnAccept, null); beginAcceptCalled = true; Socket socket = m_listener.EndAcceptSocket(ar); + if (!socket.Connected) + { + socket.Dispose(); + return; + } if (!OnAcceptingSocket(socket)) { @@ -147,12 +152,18 @@ namespace OSHttpServer return; } - m_logWriter.Write(this, LogPrio.Debug, "Accepted connection from: " + socket.RemoteEndPoint); + if(socket.Connected) + { - if (m_certificate != null) - m_contextFactory.CreateSecureContext(socket, m_certificate, m_sslProtocol, m_clientCertValCallback); + m_logWriter.Write(this, LogPrio.Debug, "Accepted connection from: " + socket.RemoteEndPoint); + + if (m_certificate != null) + m_contextFactory.CreateSecureContext(socket, m_certificate, m_sslProtocol, m_clientCertValCallback); + else + m_contextFactory.CreateContext(socket); + } else - m_contextFactory.CreateContext(socket); + socket.Dispose(); } catch (Exception err) {