split exception detection on oshttp accept loop for better log

This commit is contained in:
UbitUmarov
2025-08-05 17:50:02 +01:00
parent e3a50fb2f1
commit 63bef17153

View File

@@ -125,30 +125,57 @@ namespace OSHttpServer
private async void AcceptLoop()
{
try
while (true)
{
while (true)
if (m_shutdown)
{
if (m_shutdown)
{
m_shutdownEvent.Set();
break;
}
m_shutdownEvent?.Set();
break;
}
Socket socket = await m_listener.AcceptSocketAsync(m_CancellationSource.Token).ConfigureAwait(false); ;
Socket socket = null;
try
{
socket = await m_listener.AcceptSocketAsync(m_CancellationSource.Token).ConfigureAwait(false);
if (!socket.Connected)
{
socket.Dispose();
continue;
}
}
catch (OperationCanceledException)
{
m_shutdownEvent?.Set();
break;
}
catch (SocketException snssErr)
{
m_logWriter.Write(this, LogPrio.Debug, "OSHTTP Accept wait ignoring error: " + snssErr.Message);
socket?.Dispose();
continue;
}
catch (Exception err)
{
m_logWriter.Write(this, LogPrio.Debug, "OSHTTP Accept wait fatal error: " + err.Message);
ExceptionThrown?.Invoke(this, err);
}
socket.NoDelay = true;
if (m_shutdown)
{
m_shutdownEvent?.Set();
socket?.Dispose();
break;
}
socket.NoDelay = true;
try
{
if (!OnAcceptingSocket(socket))
{
socket.Disconnect(true);
continue;
}
if (socket.Connected)
{
m_logWriter.Write(this, LogPrio.Debug, $"Accepted connection from: {socket.RemoteEndPoint}");
@@ -159,17 +186,24 @@ namespace OSHttpServer
m_contextFactory.CreateContext(socket);
}
else
socket.Dispose();
socket?.Dispose();
}
catch (OperationCanceledException)
{
m_shutdownEvent?.Set();
break;
}
catch (SocketException snssErr)
{
m_logWriter.Write(this, LogPrio.Debug, "OSHTTP Accept processing ignoring error: " + snssErr.Message);
socket?.Dispose();
continue;
}
catch (Exception err)
{
m_logWriter.Write(this, LogPrio.Debug, "OSHTTP Accept processing fatal error: " + err.Message);
ExceptionThrown?.Invoke(this, err);
}
}
catch (OperationCanceledException)
{
m_shutdownEvent.Set();
}
catch (Exception err)
{
m_logWriter.Write(this, LogPrio.Debug, err.Message);
ExceptionThrown?.Invoke(this, err);
}
}