diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp index acd21bc90e..404ae5eef4 100644 --- a/Source/Core/Core/NetPlayClient.cpp +++ b/Source/Core/Core/NetPlayClient.cpp @@ -1581,6 +1581,8 @@ void NetPlayClient::SendAsync(sf::Packet&& packet, const u8 channel_id) // called from ---NETPLAY--- thread void NetPlayClient::ThreadFunc() { + INFO_LOG_FMT(NETPLAY, "NetPlayClient starting."); + Common::QoSSession qos_session; if (Config::Get(Config::NETPLAY_ENABLE_QOS)) { @@ -1606,10 +1608,12 @@ void NetPlayClient::ThreadFunc() net = enet_host_service(m_client, &netEvent, 250); while (!m_async_queue.Empty()) { + INFO_LOG_FMT(NETPLAY, "Processing async queue event."); { auto& e = m_async_queue.Front(); Send(e.packet, e.channel_id); } + INFO_LOG_FMT(NETPLAY, "Processing async queue event done."); m_async_queue.Pop(); } if (net > 0) @@ -1617,13 +1621,20 @@ void NetPlayClient::ThreadFunc() sf::Packet rpac; switch (netEvent.type) { + case ENET_EVENT_TYPE_CONNECT: + INFO_LOG_FMT(NETPLAY, "enet_host_service: connect event"); + break; case ENET_EVENT_TYPE_RECEIVE: + INFO_LOG_FMT(NETPLAY, "enet_host_service: receive event"); + rpac.append(netEvent.packet->data, netEvent.packet->dataLength); OnData(rpac); enet_packet_destroy(netEvent.packet); break; case ENET_EVENT_TYPE_DISCONNECT: + INFO_LOG_FMT(NETPLAY, "enet_host_service: disconnect event"); + m_dialog->OnConnectionLost(); if (m_is_running.IsSet()) @@ -1631,11 +1642,22 @@ void NetPlayClient::ThreadFunc() break; default: + ERROR_LOG_FMT(NETPLAY, "enet_host_service: unknown event type: {}", int(netEvent.type)); break; } } + else if (net == 0) + { + INFO_LOG_FMT(NETPLAY, "enet_host_service: no event occurred"); + } + else + { + ERROR_LOG_FMT(NETPLAY, "enet_host_service error: {}", net); + } } + INFO_LOG_FMT(NETPLAY, "NetPlayClient shutting down."); + Disconnect(); return; } diff --git a/Source/Core/Core/NetPlayServer.cpp b/Source/Core/Core/NetPlayServer.cpp index 0c3b50746c..5d93906e2b 100644 --- a/Source/Core/Core/NetPlayServer.cpp +++ b/Source/Core/Core/NetPlayServer.cpp @@ -270,8 +270,10 @@ void NetPlayServer::ThreadFunc() net = enet_host_service(m_server, &netEvent, 1000); while (!m_async_queue.Empty()) { + INFO_LOG_FMT(NETPLAY, "Processing async queue event."); { std::lock_guard lkp(m_crit.players); + INFO_LOG_FMT(NETPLAY, "Locked player mutex."); auto& e = m_async_queue.Front(); if (e.target_mode == TargetMode::Only) { @@ -283,6 +285,7 @@ void NetPlayServer::ThreadFunc() SendToClients(e.packet, e.target_pid, e.channel_id); } } + INFO_LOG_FMT(NETPLAY, "Processing async queue event done."); m_async_queue.Pop(); } if (net > 0) @@ -299,6 +302,8 @@ void NetPlayServer::ThreadFunc() break; case ENET_EVENT_TYPE_RECEIVE: { + INFO_LOG_FMT(NETPLAY, "enet_host_service: receive event"); + sf::Packet rpac; rpac.append(netEvent.packet->data, netEvent.packet->dataLength); @@ -341,16 +346,26 @@ void NetPlayServer::ThreadFunc() ClearPeerPlayerId(netEvent.peer); } + else + { + INFO_LOG_FMT(NETPLAY, "successfully handled packet from client {}", client.pid); + } } enet_packet_destroy(netEvent.packet); } break; case ENET_EVENT_TYPE_DISCONNECT: { + INFO_LOG_FMT(NETPLAY, "enet_host_service: disconnect event"); + std::lock_guard lkg(m_crit.game); if (!netEvent.peer->data) + { + ERROR_LOG_FMT(NETPLAY, "enet_host_service: no peer data"); break; - auto it = m_players.find(*PeerPlayerId(netEvent.peer)); + } + const auto player_id = *PeerPlayerId(netEvent.peer); + auto it = m_players.find(player_id); if (it != m_players.end()) { Client& client = it->second; @@ -359,12 +374,25 @@ void NetPlayServer::ThreadFunc() ClearPeerPlayerId(netEvent.peer); } + else + { + ERROR_LOG_FMT(NETPLAY, "Invalid player {} to disconnect.", player_id); + } } break; default: + ERROR_LOG_FMT(NETPLAY, "enet_host_service: unknown event type: {}", int(netEvent.type)); break; } } + else if (net == 0) + { + INFO_LOG_FMT(NETPLAY, "enet_host_service: no event occurred"); + } + else + { + ERROR_LOG_FMT(NETPLAY, "enet_host_service error: {}", net); + } } INFO_LOG_FMT(NETPLAY, "NetPlayServer shutting down.");