aboutsummaryrefslogtreecommitdiffhomepage
path: root/removed-patches-1-20-5
diff options
context:
space:
mode:
authorShane Freeder <[email protected]>2024-04-27 15:06:52 +0100
committerShane Freeder <[email protected]>2024-04-27 15:06:52 +0100
commit5731f346e2345f243105d6b08de25c5ce82d2177 (patch)
tree80257d8a17a8ab478f7c83504445041d828d7697 /removed-patches-1-20-5
parentf85d423535a0511a2d380aafa0c791c19ff1e6b3 (diff)
downloadPaper-5731f346e2345f243105d6b08de25c5ce82d2177.tar.gz
Paper-5731f346e2345f243105d6b08de25c5ce82d2177.zip
Restore Handle Large Packets Disconnecting Client Patch
Diffstat (limited to 'removed-patches-1-20-5')
-rw-r--r--removed-patches-1-20-5/0284-Handle-Large-Packets-disconnecting-client.patch134
1 files changed, 0 insertions, 134 deletions
diff --git a/removed-patches-1-20-5/0284-Handle-Large-Packets-disconnecting-client.patch b/removed-patches-1-20-5/0284-Handle-Large-Packets-disconnecting-client.patch
deleted file mode 100644
index de32fb8f39..0000000000
--- a/removed-patches-1-20-5/0284-Handle-Large-Packets-disconnecting-client.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Aikar <[email protected]>
-Date: Tue, 27 Nov 2018 21:18:06 -0500
-Subject: [PATCH] Handle Large Packets disconnecting client
-
-If a players inventory is too big to send in a single packet,
-split the inventory set into multiple packets instead.
-
-diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
-index 02b3f5c67b47a098f7fe15ddba0df6cb586a9ae5..157f055df00faf3a7870df8109e84fdb12f55964 100644
---- a/src/main/java/net/minecraft/network/Connection.java
-+++ b/src/main/java/net/minecraft/network/Connection.java
-@@ -156,6 +156,22 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
- }
-
- public void exceptionCaught(ChannelHandlerContext channelhandlercontext, Throwable throwable) {
-+ // Paper start - Handle large packets disconnecting client
-+ if (throwable instanceof io.netty.handler.codec.EncoderException && throwable.getCause() instanceof PacketEncoder.PacketTooLargeException packetTooLargeException) {
-+ final Packet<?> packet = packetTooLargeException.getPacket();
-+ final io.netty.util.Attribute<ConnectionProtocol.CodecData<?>> codecDataAttribute = channelhandlercontext.channel().attr(packetTooLargeException.codecKey);
-+ if (packet.packetTooLarge(this)) {
-+ ProtocolSwapHandler.swapProtocolIfNeeded(codecDataAttribute, packet);
-+ return;
-+ } else if (packet.isSkippable()) {
-+ Connection.LOGGER.debug("Skipping packet due to errors", throwable.getCause());
-+ ProtocolSwapHandler.swapProtocolIfNeeded(codecDataAttribute, packet);
-+ return;
-+ } else {
-+ throwable = throwable.getCause();
-+ }
-+ }
-+ // Paper end - Handle large packets disconnecting client
- if (throwable instanceof SkipPacketException) {
- Connection.LOGGER.debug("Skipping packet due to errors", throwable.getCause());
- } else {
-diff --git a/src/main/java/net/minecraft/network/PacketEncoder.java b/src/main/java/net/minecraft/network/PacketEncoder.java
-index 0d80fcee1831af59b06c4d00dc713bd4dad947fc..061eada043325142d33a0cec02e9e484d14a7fca 100644
---- a/src/main/java/net/minecraft/network/PacketEncoder.java
-+++ b/src/main/java/net/minecraft/network/PacketEncoder.java
-@@ -41,7 +41,7 @@ public class PacketEncoder extends MessageToByteEncoder<Packet<?>> {
- int j = friendlyByteBuf.writerIndex();
- packet.write(friendlyByteBuf);
- int k = friendlyByteBuf.writerIndex() - j;
-- if (k > 8388608) {
-+ if (false && k > 8388608) { // Paper - Handle large packets disconnecting client; disable
- throw new IllegalArgumentException("Packet too big (is " + k + ", should be less than 8388608): " + packet);
- }
-
-@@ -54,9 +54,34 @@ public class PacketEncoder extends MessageToByteEncoder<Packet<?>> {
-
- throw var13;
- } finally {
-+ // Paper start - Handle large packets disconnecting client
-+ int packetLength = friendlyByteBuf.readableBytes();
-+ if (packetLength > MAX_PACKET_SIZE) {
-+ throw new PacketTooLargeException(packet, this.codecKey, packetLength);
-+ }
-+ // Paper end - Handle large packets disconnecting client
- ProtocolSwapHandler.swapProtocolIfNeeded(attribute, packet);
- }
- }
- }
- }
-+
-+ // Paper start
-+ private static int MAX_PACKET_SIZE = 8388608;
-+
-+ public static class PacketTooLargeException extends RuntimeException {
-+ private final Packet<?> packet;
-+ public final AttributeKey<ConnectionProtocol.CodecData<?>> codecKey;
-+
-+ PacketTooLargeException(Packet<?> packet, AttributeKey<ConnectionProtocol.CodecData<?>> codecKey, int packetLength) {
-+ super("PacketTooLarge - " + packet.getClass().getSimpleName() + " is " + packetLength + ". Max is " + MAX_PACKET_SIZE);
-+ this.packet = packet;
-+ this.codecKey = codecKey;
-+ }
-+
-+ public Packet<?> getPacket() {
-+ return this.packet;
-+ }
-+ }
-+ // Paper end
- }
-diff --git a/src/main/java/net/minecraft/network/protocol/Packet.java b/src/main/java/net/minecraft/network/protocol/Packet.java
-index 700418bb0c9fbed3f161611881b1e222248ca4eb..cc658a61065d5c0021a4b88fa58b40211b94f8ec 100644
---- a/src/main/java/net/minecraft/network/protocol/Packet.java
-+++ b/src/main/java/net/minecraft/network/protocol/Packet.java
-@@ -10,6 +10,12 @@ public interface Packet<T extends PacketListener> {
-
- void handle(T listener);
-
-+ // Paper start
-+ default boolean packetTooLarge(net.minecraft.network.Connection manager) {
-+ return false;
-+ }
-+ // Paper end
-+
- default boolean isSkippable() {
- return false;
- }
-diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundContainerSetContentPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundContainerSetContentPacket.java
-index 6206d4d71dfe95b454b22f5b3055623638e145c0..6765175c98d52e5cbc191e88e0d545a05606dfd4 100644
---- a/src/main/java/net/minecraft/network/protocol/game/ClientboundContainerSetContentPacket.java
-+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundContainerSetContentPacket.java
-@@ -31,6 +31,16 @@ public class ClientboundContainerSetContentPacket implements Packet<ClientGamePa
- this.carriedItem = buf.readItem();
- }
-
-+ // Paper start
-+ @Override
-+ public boolean packetTooLarge(net.minecraft.network.Connection manager) {
-+ for (int i = 0 ; i < this.items.size() ; i++) {
-+ manager.send(new ClientboundContainerSetSlotPacket(this.containerId, this.stateId, i, this.items.get(i)));
-+ }
-+ return true;
-+ }
-+ // Paper end
-+
- @Override
- public void write(FriendlyByteBuf buf) {
- buf.writeByte(this.containerId);
-diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
-index dc657312889da4fc3222a6981223a01406b77deb..a44a82d2d5ed4d675dc1a184d5b6b935fda575dd 100644
---- a/src/main/java/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
-+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
-@@ -49,7 +49,7 @@ public class ClientboundLevelChunkPacketData {
- throw new RuntimeException("Can't read heightmap in packet for [" + x + ", " + z + "]");
- } else {
- int i = buf.readVarInt();
-- if (i > 2097152) {
-+ if (i > 2097152) { // Paper - diff on change - if this changes, update PacketEncoder
- throw new RuntimeException("Chunk Packet trying to allocate too much memory on read.");
- } else {
- this.buffer = new byte[i];