diff --git a/LobbyServer/Program.cs b/LobbyServer/Program.cs index 67fd490..816594a 100644 --- a/LobbyServer/Program.cs +++ b/LobbyServer/Program.cs @@ -16,15 +16,36 @@ ConcurrentDictionary> clientsWatchingGameId = new ConcurrentDict BufferRental bufferRental = new BufferRental(4096); udpServer.QueryIpAndPort += (clientId, ip, port) => -{ - var messageData = bufferRental.Rent(); - var seenExternalIpAndPort = new SeenExternalIpAndPort() { Ip = ip, Port = port }; - var messageDataLength = seenExternalIpAndPort.Serialize(messageData); - _ = Task.Run(async () => +{ + Console.WriteLine($"{DateTime.Now}: [TcpServer] sending QueryExternalPortAndIp result for lobby client id {clientId} with {ip}:{port}"); + byte[]? messageData = null; + + try { - await tcpServer.Send(clientId, messageData, 0, messageDataLength); - bufferRental.Return(messageData); - }); + messageData = bufferRental.Rent(); + var seenExternalIpAndPort = new SeenExternalIpAndPort() { Ip = ip, Port = port }; + var messageDataLength = seenExternalIpAndPort.Serialize(messageData); + _ = Task.Run(async () => + { + try + { + await tcpServer.Send(clientId, messageData, 0, messageDataLength); + } + catch(Exception ex) + { + Console.WriteLine($"{DateTime.Now}: [TcpServer] error in QueryExternalPortAndIp result for lobby client id {clientId} with {ip}:{port}: {ex.ToString()}"); + } + + bufferRental.Return(messageData); + messageData = null; + }); + } + catch (Exception ex) + { + Console.WriteLine($"{DateTime.Now}: [TcpServer] error in QueryExternalPortAndIp result for lobby client id {clientId} with {ip}:{port}: {ex.ToString()}"); + if (messageData != null) + bufferRental.Return(messageData); + } }; tcpServer.DataReceived += (clientId, dataLength, data) => diff --git a/LobbyServer/UdpCandidateServer.cs b/LobbyServer/UdpCandidateServer.cs index 8dd8f7e..f0c837b 100644 --- a/LobbyServer/UdpCandidateServer.cs +++ b/LobbyServer/UdpCandidateServer.cs @@ -36,11 +36,13 @@ namespace LobbyServer var receiveResult = await serverSocket.ReceiveAsync(cancellationTokenSource.Token); if(receiveResult.Buffer.Length > 0) { + Console.WriteLine($"{DateTime.Now}: [UdpCandidateServer] received packet"); Memory receivedData = new Memory(receiveResult.Buffer); switch (LobbyMessageIdentifier.ReadLobbyMessageIdentifier(receivedData.Span)) { - case QueryExternalPortAndIp.TypeId: + case QueryExternalPortAndIp.TypeId: var queryExternalPortAndIp = QueryExternalPortAndIp.Deserialize(receivedData.Span); + Console.WriteLine($"{DateTime.Now}: [UdpCandidateServer] received QueryExternalPortAndIp for lobby client id {queryExternalPortAndIp.LobbyClientId} from {receiveResult.RemoteEndPoint.Address.ToString()}:{receiveResult.RemoteEndPoint.Port}"); QueryIpAndPort?.Invoke(queryExternalPortAndIp.LobbyClientId, receiveResult.RemoteEndPoint.Address.ToString(), receiveResult.RemoteEndPoint.Port); break; }