summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-08-06 12:32:27 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-08-06 12:32:27 +0200
commit4359c28feafb39dd0157744a52f6746d49a38c37 (patch)
tree1bac9247e3bcf6578cb9ff3d76ea49962767fb67
parent4577b370366f46a8571583c0fbf779951ce0dc98 (diff)
parent531c72f30d5bc23e56b4841f5f657397e9095bf5 (diff)
downloadredot-engine-4359c28feafb39dd0157744a52f6746d49a38c37.tar.gz
Merge pull request #95192 from Faless/mp/quite_relay_to_disconnected
[MP] Avoid error spam in relay protocol when clients disconnect
-rw-r--r--modules/multiplayer/scene_multiplayer.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/modules/multiplayer/scene_multiplayer.cpp b/modules/multiplayer/scene_multiplayer.cpp
index e2ebca0c88..6694376b30 100644
--- a/modules/multiplayer/scene_multiplayer.cpp
+++ b/modules/multiplayer/scene_multiplayer.cpp
@@ -307,8 +307,10 @@ void SceneMultiplayer::_process_sys(int p_from, const uint8_t *p_packet, int p_p
int len = p_packet_len - SYS_CMD_SIZE;
bool should_process = false;
if (get_unique_id() == 1) { // I am the server.
- // Direct messages to server should not go through relay.
- ERR_FAIL_COND(peer > 0 && !connected_peers.has(peer));
+ // The requested target might have disconnected while the packet was in transit.
+ if (unlikely(peer > 0 && !connected_peers.has(peer))) {
+ return;
+ }
// Send relay packet.
relay_buffer->seek(0);
relay_buffer->put_u8(NETWORK_COMMAND_SYS);