protected async Task HandleConnectionAsync(UvStreamHandle socket) { try { var connection = new LibuvConnection(socket, TransportContext.Log, Thread); var middlewareTask = TransportContext.ConnectionDispatcher.OnConnection(connection); var transportTask = connection.Start(); await transportTask; await middlewareTask; connection.Dispose(); } catch (Exception ex) { TransportContext.Log.LogCritical(ex, $"Unexpected exception in {nameof(ListenerContext)}.{nameof(HandleConnectionAsync)}."); } }
protected async Task HandleConnectionAsync(UvStreamHandle socket) { try { IPEndPoint remoteEndPoint = null; IPEndPoint localEndPoint = null; if (socket is UvTcpHandle tcpHandle) { try { remoteEndPoint = tcpHandle.GetPeerIPEndPoint(); localEndPoint = tcpHandle.GetSockIPEndPoint(); } catch (UvException ex) when(LibuvConstants.IsConnectionReset(ex.StatusCode)) { TransportContext.Log.ConnectionReset("(null)"); socket.Dispose(); return; } } var connection = new LibuvConnection(socket, TransportContext.Log, Thread, remoteEndPoint, localEndPoint); var middlewareTask = TransportContext.ConnectionDispatcher.OnConnection(connection); var transportTask = connection.Start(); await transportTask; await middlewareTask; connection.Dispose(); } catch (Exception ex) { TransportContext.Log.LogCritical(ex, $"Unexpected exception in {nameof(ListenerContext)}.{nameof(HandleConnectionAsync)}."); } }