From 77119316f51214d485b3f0cef35751592ebf86a0 Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Tue, 24 Aug 2021 09:31:19 -0400 Subject: [PATCH] Check for closed immediately before processing a packet --- .../geysermc/connector/network/session/GeyserSession.java | 5 ++++- .../network/translators/PacketTranslatorRegistry.java | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java b/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java index 2034c5c7e..73e0d9c2e 100644 --- a/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java +++ b/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java @@ -220,7 +220,10 @@ public class GeyserSession implements CommandSender { @Setter private boolean spawned; - private boolean closed; + /** + * Accessed on the initial Java and Bedrock packet processing threads + */ + private volatile boolean closed; @Setter private GameMode gameMode = GameMode.SURVIVAL; diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/PacketTranslatorRegistry.java b/connector/src/main/java/org/geysermc/connector/network/translators/PacketTranslatorRegistry.java index a04773dbf..7bd0e66ac 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/PacketTranslatorRegistry.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/PacketTranslatorRegistry.java @@ -107,6 +107,10 @@ public class PacketTranslatorRegistry { } private

void translate0(GeyserSession session, PacketTranslator

translator, P packet) { + if (session.isClosed()) { + return; + } + try { translator.translate(packet, session); } catch (Throwable ex) {