From 7f15d7832fba575ed363e9037edaa2d7da3e7e7b Mon Sep 17 00:00:00 2001 From: Professor Bloodstone Date: Sun, 13 Jun 2021 18:25:59 +0200 Subject: [PATCH] Fix recursive connection call causing StackOverflowException This was probably caused by the rename sendPacket->send and dispatchPacket->sendPacket --- ...ize-Network-Manager-and-add-advanced-packet-sup.patch | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/patches/server/0306-Optimize-Network-Manager-and-add-advanced-packet-sup.patch b/patches/server/0306-Optimize-Network-Manager-and-add-advanced-packet-sup.patch index a50c8d9c54..4a73f0aa96 100644 --- a/patches/server/0306-Optimize-Network-Manager-and-add-advanced-packet-sup.patch +++ b/patches/server/0306-Optimize-Network-Manager-and-add-advanced-packet-sup.patch @@ -28,7 +28,7 @@ and then catch exceptions and close if they fire. Part of this commit was authored by: Spottedleaf diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 9f0537799a3cae43fb120056b8fe805a4883cc4d..5897bdb4d1372fa3d7bdc482d02f0a54d8767bda 100644 +index 9f0537799a3cae43fb120056b8fe805a4883cc4d..7607bf75968cc32d616e2b44e89901b3681b1131 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -87,6 +87,10 @@ public class Connection extends SimpleChannelInboundHandler> { @@ -106,9 +106,6 @@ index 9f0537799a3cae43fb120056b8fe805a4883cc4d..5897bdb4d1372fa3d7bdc482d02f0a54 public void send(Packet packet, @Nullable GenericFutureListener> callback) { - if (this.isConnected()) { - this.flushQueue(); -- this.sendPacket(packet, callback); -- } else { -- this.queue.add(new Connection.PacketHolder(packet, callback)); + // Paper start - handle oversized packets better + boolean connected = this.isConnected(); + if (!connected && !preparing) { @@ -119,7 +116,9 @@ index 9f0537799a3cae43fb120056b8fe805a4883cc4d..5897bdb4d1372fa3d7bdc482d02f0a54 + net.minecraft.server.MCUtil.isMainThread() && packet.isReady() && this.queue.isEmpty() && + (packet.getExtraPackets() == null || packet.getExtraPackets().isEmpty()) + ))) { -+ this.send(packet, callback); + this.sendPacket(packet, callback); +- } else { +- this.queue.add(new Connection.PacketHolder(packet, callback)); + return; } + // write the packets to the queue, then flush - antixray hooks there already