From b1122ec94f999b369f892e56eb1248d0a6ab69bc Mon Sep 17 00:00:00 2001 From: Techjar Date: Mon, 14 Mar 2022 00:19:54 -0400 Subject: [PATCH 1/2] NetPlay: Add timeout to traversal code path Amendment to 600c816 as I missed the traversal case. --- Source/Core/Core/NetPlayClient.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp index e40c5f0a59..771e9b1dc3 100644 --- a/Source/Core/Core/NetPlayClient.cpp +++ b/Source/Core/Core/NetPlayClient.cpp @@ -210,6 +210,10 @@ NetPlayClient::NetPlayClient(const std::string& address, const u16 port, NetPlay { case ENET_EVENT_TYPE_CONNECT: m_server = netEvent.peer; + + // Extend reliable traffic timeout + enet_peer_timeout(m_server, 0, 30000, 30000); + if (Connect()) { m_connection_state = ConnectionState::Connected; From 302dedbd241e802ee39279e43d25d60fc10e7a82 Mon Sep 17 00:00:00 2001 From: Techjar Date: Tue, 15 Mar 2022 01:26:55 -0400 Subject: [PATCH 2/2] NetPlay: Introduce constant for peer timeout --- Source/Core/Core/NetPlayClient.cpp | 4 ++-- Source/Core/Core/NetPlayCommon.h | 2 ++ Source/Core/Core/NetPlayServer.cpp | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp index 771e9b1dc3..75f02fa7f8 100644 --- a/Source/Core/Core/NetPlayClient.cpp +++ b/Source/Core/Core/NetPlayClient.cpp @@ -153,7 +153,7 @@ NetPlayClient::NetPlayClient(const std::string& address, const u16 port, NetPlay } // Extend reliable traffic timeout - enet_peer_timeout(m_server, 0, 30000, 30000); + enet_peer_timeout(m_server, 0, PEER_TIMEOUT, PEER_TIMEOUT); ENetEvent netEvent; int net = enet_host_service(m_client, &netEvent, 5000); @@ -212,7 +212,7 @@ NetPlayClient::NetPlayClient(const std::string& address, const u16 port, NetPlay m_server = netEvent.peer; // Extend reliable traffic timeout - enet_peer_timeout(m_server, 0, 30000, 30000); + enet_peer_timeout(m_server, 0, PEER_TIMEOUT, PEER_TIMEOUT); if (Connect()) { diff --git a/Source/Core/Core/NetPlayCommon.h b/Source/Core/Core/NetPlayCommon.h index 9893131772..e77bd307db 100644 --- a/Source/Core/Core/NetPlayCommon.h +++ b/Source/Core/Core/NetPlayCommon.h @@ -14,6 +14,8 @@ namespace NetPlay { +constexpr u32 PEER_TIMEOUT = 30000; + bool CompressFileIntoPacket(const std::string& file_path, sf::Packet& packet); bool CompressFolderIntoPacket(const std::string& folder_path, sf::Packet& packet); bool CompressBufferIntoPacket(const std::vector& in_buffer, sf::Packet& packet); diff --git a/Source/Core/Core/NetPlayServer.cpp b/Source/Core/Core/NetPlayServer.cpp index d2335149db..a8b5a77032 100644 --- a/Source/Core/Core/NetPlayServer.cpp +++ b/Source/Core/Core/NetPlayServer.cpp @@ -417,7 +417,7 @@ ConnectionError NetPlayServer::OnConnect(ENetPeer* socket, sf::Packet& rpac) return ConnectionError::NameTooLong; // Extend reliable traffic timeout - enet_peer_timeout(socket, 0, 30000, 30000); + enet_peer_timeout(socket, 0, PEER_TIMEOUT, PEER_TIMEOUT); // cause pings to be updated m_update_pings = true;