From 04e1b070ef27c6f575e780635b834d2f6f4b15c7 Mon Sep 17 00:00:00 2001 From: PureGero Date: Thu, 2 Jun 2022 07:58:22 +1000 Subject: [PATCH] Check HAProxyMessage type is PROXY (#7864) --- .../0905-Add-support-for-Proxy-Protocol.patch | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/patches/server/0905-Add-support-for-Proxy-Protocol.patch b/patches/server/0905-Add-support-for-Proxy-Protocol.patch index 95fd23aaf3..7d940aadba 100644 --- a/patches/server/0905-Add-support-for-Proxy-Protocol.patch +++ b/patches/server/0905-Add-support-for-Proxy-Protocol.patch @@ -19,7 +19,7 @@ index 1ac6cf51f2682d5eb14fe19646e79f6617d492dd..fafbebbb5e8c1a381b673f97f1fa2106 + } } diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java -index 058fb3696c7ece4a7b6971886b1760b26add733b..bd378482b82c15cba1eeaa620521ad9ed460a1da 100644 +index 058fb3696c7ece4a7b6971886b1760b26add733b..98286dd27fc3562ca55ec44cc6e5eb5157269942 100644 --- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java +++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java @@ -109,6 +109,12 @@ public class ServerConnectionListener { @@ -35,7 +35,7 @@ index 058fb3696c7ece4a7b6971886b1760b26add733b..bd378482b82c15cba1eeaa620521ad9e this.channels.add(((ServerBootstrap) ((ServerBootstrap) (new ServerBootstrap()).channel(oclass)).childHandler(new ChannelInitializer() { protected void initChannel(Channel channel) { try { -@@ -122,6 +128,28 @@ public class ServerConnectionListener { +@@ -122,6 +128,30 @@ public class ServerConnectionListener { int j = ServerConnectionListener.this.server.getRateLimitPacketsPerSecond(); Object object = j > 0 ? new RateKickingConnection(j) : new Connection(PacketFlow.SERVERBOUND); @@ -46,13 +46,15 @@ index 058fb3696c7ece4a7b6971886b1760b26add733b..bd378482b82c15cba1eeaa620521ad9e + @Override + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { + if (msg instanceof io.netty.handler.codec.haproxy.HAProxyMessage message) { -+ String realaddress = message.sourceAddress(); -+ int realport = message.sourcePort(); ++ if (message.command() == io.netty.handler.codec.haproxy.HAProxyCommand.PROXY) { ++ String realaddress = message.sourceAddress(); ++ int realport = message.sourcePort(); + -+ SocketAddress socketaddr = new java.net.InetSocketAddress(realaddress, realport); ++ SocketAddress socketaddr = new java.net.InetSocketAddress(realaddress, realport); + -+ Connection connection = (Connection) channel.pipeline().get("packet_handler"); -+ connection.address = socketaddr; ++ Connection connection = (Connection) channel.pipeline().get("packet_handler"); ++ connection.address = socketaddr; ++ } + } else { + super.channelRead(ctx, msg); + }