Fix preemptive connection dropping during shutdown process (#8546)
This commit is contained in:
parent
28b4027d45
commit
309133e2e1
|
@ -53,4 +53,5 @@ Nick Hensel <nickhensel25@icloud.com>
|
||||||
vytskalt <vytskalt@protonmail.com>
|
vytskalt <vytskalt@protonmail.com>
|
||||||
TheFruxz <cedricspitzer@outlook.de>
|
TheFruxz <cedricspitzer@outlook.de>
|
||||||
Kieran Wallbanks <kieran.wallbanks@gmail.com>
|
Kieran Wallbanks <kieran.wallbanks@gmail.com>
|
||||||
|
Denery <dorofeevij@gmail.com>
|
||||||
```
|
```
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Denery <dorofeevij@gmail.com>
|
||||||
|
Date: Sun, 6 Nov 2022 02:02:46 +0300
|
||||||
|
Subject: [PATCH] Fix player kick on shutdown
|
||||||
|
|
||||||
|
Fix preemptive player kick on a server shutdown.
|
||||||
|
If you update minecraft version / upstream and something is changed in this method make sure that a server doesn't disconnect a player preemptively,
|
||||||
|
also check if all packets are ignored during the shutdown process.
|
||||||
|
See net.minecraft.network.Connection#channelRead0(ChannelHandlerContext, Packet) and net.minecraft.util.thread.BlockableEventLoop#executeIfPossible(Runnable)
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
|
||||||
|
index 8bc0cb9ad5bb4e76d962ff54305e2c08e279a17b..edefab4e22ee7217e17eb036165ce58788d4c782 100644
|
||||||
|
--- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java
|
||||||
|
+++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
|
||||||
|
@@ -41,7 +41,7 @@ public class PacketUtils {
|
||||||
|
|
||||||
|
public static <T extends PacketListener> void ensureRunningOnSameThread(Packet<T> packet, T listener, BlockableEventLoop<?> engine) throws RunningOnDifferentThreadException {
|
||||||
|
if (!engine.isSameThread()) {
|
||||||
|
- engine.executeIfPossible(() -> {
|
||||||
|
+ engine.execute(() -> { // Paper - Fix preemptive player kick on a server shutdown.
|
||||||
|
packetProcessing.push(listener); // Paper - detailed watchdog information
|
||||||
|
try { // Paper - detailed watchdog information
|
||||||
|
if (MinecraftServer.getServer().hasStopped() || (listener instanceof ServerGamePacketListenerImpl && ((ServerGamePacketListenerImpl) listener).processedDisconnect)) return; // CraftBukkit, MC-142590
|
Loading…
Reference in New Issue