This commit is contained in:
foss-mc 2020-12-16 18:44:19 +08:00
parent 531d2531db
commit 79fc7fea6f
5 changed files with 85 additions and 54 deletions

View File

@ -1,4 +1,4 @@
From ce3a53d84ba7dbe3a0f50817ccad80ae41176309 Mon Sep 17 00:00:00 2001
From 7ff984d41446f889b790be1376acae78cddc2fe8 Mon Sep 17 00:00:00 2001
From: foss-mc <69294560+foss-mc@users.noreply.github.com>
Date: Wed, 16 Dec 2020 18:10:30 +0800
Subject: [PATCH] Packet Checks
@ -28,6 +28,22 @@ index ec932e92..f1f34626 100644
ByteBuf slice = in.copy(); // Can't slice this one due to EntityMap :(
Object packetTypeInfo = null;
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java
index 1351d5d5..d68cc2ce 100644
--- a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java
+++ b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java
@@ -79,6 +79,11 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
{
+ // FlameCord - Return if channel isn't active
+ if (!ctx.channel().isActive()) {
+ return;
+ }
+
if ( msg instanceof HAProxyMessage )
{
HAProxyMessage proxy = (HAProxyMessage) msg;
--
2.20.1

View File

@ -1,14 +1,23 @@
From 057f0c8645075d20539e813e8932e344ba6fa2c8 Mon Sep 17 00:00:00 2001
From 68c2b0ea3b16f7b571ff8c576f54042f4402e251 Mon Sep 17 00:00:00 2001
From: foss-mc <69294560+foss-mc@users.noreply.github.com>
Date: Wed, 16 Dec 2020 18:36:08 +0800
Subject: [PATCH] Finish early to avoid multiple incoming packets
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index b71d25dc..eecdc3bd 100644
index b71d25dc..61f80012 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -524,6 +524,9 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -472,6 +472,8 @@ public class InitialHandler extends PacketHandler implements PendingConnection
public void handle(final EncryptionResponse encryptResponse) throws Exception
{
Preconditions.checkState( thisState == State.ENCRYPT, "Not expecting ENCRYPT" );
+ // FlameCord - Finish here to avoid multiple incoming packets
+ thisState = State.FINISHED;
SecretKey sharedKey = EncryptionUtil.getSecret( encryptResponse, request );
BungeeCipher decrypt = EncryptionUtil.getCipher( false, sharedKey );
@@ -524,6 +526,9 @@ public class InitialHandler extends PacketHandler implements PendingConnection
private void finish()
{
@ -18,7 +27,7 @@ index b71d25dc..eecdc3bd 100644
if ( isOnlineMode() )
{
// Check for multiple connections
@@ -605,8 +608,6 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -605,8 +610,6 @@ public class InitialHandler extends PacketHandler implements PendingConnection
}
userCon.connect( server, null, true, ServerConnectEvent.Reason.JOIN_PROXY );

View File

@ -0,0 +1,24 @@
From 8918151068bb611b3d455693ccea42387cbd3719 Mon Sep 17 00:00:00 2001
From: foss-mc <69294560+foss-mc@users.noreply.github.com>
Date: Wed, 16 Dec 2020 18:40:55 +0800
Subject: [PATCH] Change IllegalStateException to QuietException and explain
that is a plugin
diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
index 6cc520c9..159119c1 100644
--- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
+++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
@@ -307,7 +307,8 @@ public final class UserConnection implements ProxiedPlayer
if ( getServer() == null && !ch.isClosing() )
{
- throw new IllegalStateException( "Cancelled ServerConnectEvent with no server or disconnect." );
+ // FlameCord - Change IllegalStateException to QuietException and explain that is a plugin
+ throw new QuietException("A plugin cancelled ServerConnectEvent with no server or disconnect.");
}
return;
}
--
2.20.1

View File

@ -0,0 +1,25 @@
From 67efa4ede50e4b1fbf0d5dc8528b8543424a289b Mon Sep 17 00:00:00 2001
From: foss-mc <69294560+foss-mc@users.noreply.github.com>
Date: Wed, 16 Dec 2020 18:43:17 +0800
Subject: [PATCH] Don't declare uuid unless it's null
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index 61f80012..502e0ae1 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -508,7 +508,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection
{
loginProfile = obj;
name = obj.getName();
- uniqueId = Util.getUUID( obj.getId() );
+ // FlameCord - Don't declare uuid unless it's null
+ if (uniqueId == null) {
+ uniqueId = Util.getUUID(obj.getId());
+ }
finish();
return;
}
--
2.20.1

View File

@ -1,4 +1,4 @@
From a8c8e973a1767d1e5c01ebd8306f240c7de00ad0 Mon Sep 17 00:00:00 2001
From 2f459340f4f410e9f98660dd03f4d56900a45e44 Mon Sep 17 00:00:00 2001
From: Juan Cruz Linsalata <LinsaFTW@users.noreply.github.com>
Date: Mon, 12 Oct 2020 15:40:53 -0300
Subject: [PATCH] FlameCord General Patch
@ -855,7 +855,7 @@ index e90237ac..3cfef373 100644
}
diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
index 6cc520c9..7c4c8f8a 100644
index 159119c1..7c4c8f8a 100644
--- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
+++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
@@ -35,6 +35,7 @@ import net.md_5.bungee.api.SkinConfiguration;
@ -874,17 +874,7 @@ index 6cc520c9..7c4c8f8a 100644
@RequiredArgsConstructor
public final class UserConnection implements ProxiedPlayer
@@ -307,7 +309,8 @@ public final class UserConnection implements ProxiedPlayer
if ( getServer() == null && !ch.isClosing() )
{
- throw new IllegalStateException( "Cancelled ServerConnectEvent with no server or disconnect." );
+ // FlameCord - Change IllegalStateException to QuietException and explain that is a plugin
+ throw new QuietException("A plugin cancelled ServerConnectEvent with no server or disconnect.");
}
return;
}
@@ -386,9 +389,11 @@ public final class UserConnection implements ProxiedPlayer
@@ -387,9 +389,11 @@ public final class UserConnection implements ProxiedPlayer
.option( ChannelOption.CONNECT_TIMEOUT_MILLIS, request.getConnectTimeout() )
.remoteAddress( target.getAddress() );
// Windows is bugged, multi homed users will just have to live with random connecting IPs
@ -899,7 +889,7 @@ index 6cc520c9..7c4c8f8a 100644
b.connect().addListener( listener );
}
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index eecdc3bd..138dffa0 100644
index 502e0ae1..138dffa0 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -19,6 +19,8 @@ import com.google.gson.Gson;
@ -954,27 +944,6 @@ index eecdc3bd..138dffa0 100644
{
bungee.getLogger().log( Level.INFO, "{0} has connected", this );
}
@@ -472,6 +483,8 @@ public class InitialHandler extends PacketHandler implements PendingConnection
public void handle(final EncryptionResponse encryptResponse) throws Exception
{
Preconditions.checkState( thisState == State.ENCRYPT, "Not expecting ENCRYPT" );
+ // FlameCord - Finish here to avoid multiple incoming packets
+ thisState = State.FINISHED;
SecretKey sharedKey = EncryptionUtil.getSecret( encryptResponse, request );
BungeeCipher decrypt = EncryptionUtil.getCipher( false, sharedKey );
@@ -506,7 +519,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection
{
loginProfile = obj;
name = obj.getName();
- uniqueId = Util.getUUID( obj.getId() );
+ // FlameCord - Don't declare uuid unless it's null
+ if (uniqueId == null) {
+ uniqueId = Util.getUUID(obj.getId());
+ }
finish();
return;
}
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/PingHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/PingHandler.java
index 6cd71071..09909bd9 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/PingHandler.java
@ -1012,7 +981,7 @@ index 6cd71071..09909bd9 100644
}
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java
index 1351d5d5..46e338ca 100644
index d68cc2ce..46e338ca 100644
--- a/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java
+++ b/proxy/src/main/java/net/md_5/bungee/netty/HandlerBoss.java
@@ -1,6 +1,9 @@
@ -1065,19 +1034,7 @@ index 1351d5d5..46e338ca 100644
{
ProxyServer.getInstance().getLogger().log( Level.INFO, "{0} has disconnected", handler );
}
@@ -79,6 +92,11 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
{
+ // FlameCord - Return if channel isn't active
+ if (!ctx.channel().isActive()) {
+ return;
+ }
+
if ( msg instanceof HAProxyMessage )
{
HAProxyMessage proxy = (HAProxyMessage) msg;
@@ -125,7 +143,24 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter
@@ -130,7 +143,24 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter
{
if ( ctx.channel().isActive() )
{