From e3105bc57a620a910ba1cd40c5a39a1cb01310e3 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 4 May 2020 03:07:04 -0400 Subject: [PATCH] Don't flush packet queue off main thread Increases risk of deadlock if a plugin using protocollib sends a packet async, and then a listener then reads world state, and main thread is then blocked waiting for the queue to flush. This will break out of the synchronized block when it jumps to the netty event loop. See: https://gist.github.com/aikar/e7abb2ba7059149d0a91f7a226e98590 --- ...Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spigot-Server-Patches/Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch b/Spigot-Server-Patches/Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch index 6b3a14cae..7fdd6dd1e 100644 --- a/Spigot-Server-Patches/Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch +++ b/Spigot-Server-Patches/Handle-Excessive-Signs-in-Chunks-creating-large-pack.patch @@ -14,7 +14,7 @@ With further contributions from Co-Authored-by: Spottedleaf diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java -index b1dededc15..e966b6edcc 100644 +index b1dededc15..07e3ddb6e9 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler> { @@ -73,7 +73,7 @@ index b1dededc15..e966b6edcc 100644 + + this.packetQueue.addAll(packets); // atomic + } -+ this.sendPacketQueue(); // ensure only one flush call is made ++ if (MCUtil.isMainThread()) this.sendPacketQueue(); + // Paper end }