From 26433bf021b450d10dde947359fd4c093b32b7cf Mon Sep 17 00:00:00 2001 From: Outfluencer Date: Sat, 19 Apr 2025 07:32:34 +0200 Subject: [PATCH] #3821: Fix race condition that leads to incorrect packet order --- .../net/md_5/bungee/connection/DownstreamBridge.java | 11 +++++++++++ .../net/md_5/bungee/connection/UpstreamBridge.java | 7 ------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java index 10f7ba99..71470345 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java @@ -55,6 +55,7 @@ import net.md_5.bungee.protocol.Protocol; import net.md_5.bungee.protocol.ProtocolConstants; import net.md_5.bungee.protocol.packet.BossBar; import net.md_5.bungee.protocol.packet.Commands; +import net.md_5.bungee.protocol.packet.FinishConfiguration; import net.md_5.bungee.protocol.packet.KeepAlive; import net.md_5.bungee.protocol.packet.Kick; import net.md_5.bungee.protocol.packet.Login; @@ -801,6 +802,16 @@ public class DownstreamBridge extends PacketHandler throw CancelSendSignal.INSTANCE; } + @Override + public void handle(FinishConfiguration finishConfiguration) throws Exception + { + // the clients protocol will change to GAME after this packet + con.unsafe().sendPacket( finishConfiguration ); + // send queued packets as early as possible + con.sendQueuedPackets(); + throw CancelSendSignal.INSTANCE; + } + @Override public String toString() { diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java index ce975957..93f57bc1 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java @@ -33,7 +33,6 @@ import net.md_5.bungee.protocol.packet.ClientChat; import net.md_5.bungee.protocol.packet.ClientCommand; import net.md_5.bungee.protocol.packet.ClientSettings; import net.md_5.bungee.protocol.packet.CookieResponse; -import net.md_5.bungee.protocol.packet.FinishConfiguration; import net.md_5.bungee.protocol.packet.KeepAlive; import net.md_5.bungee.protocol.packet.LoginAcknowledged; import net.md_5.bungee.protocol.packet.LoginPayloadResponse; @@ -367,12 +366,6 @@ public class UpstreamBridge extends PacketHandler } } - @Override - public void handle(FinishConfiguration finishConfiguration) throws Exception - { - con.sendQueuedPackets(); - } - @Override public void handle(CookieResponse cookieResponse) throws Exception {