From 221ee510ff0aaeac457b05fb13f2ba2aa5ab25ba Mon Sep 17 00:00:00 2001 From: Andrew Steinborn Date: Tue, 1 Jan 2019 04:34:31 -0500 Subject: [PATCH] Minor cleanup. --- .../connection/client/LoginSessionHandler.java | 2 ++ .../proxy/network/ConnectionManager.java | 6 +++--- .../proxy/network/ServerChannelInitializer.java | 2 +- .../network/ServerChannelInitializerHolder.java | 2 +- .../protocol/netty/MinecraftCompressDecoder.java | 15 +++++++-------- .../brigadier/VoidArgumentPropertySerializer.java | 2 +- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/LoginSessionHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/LoginSessionHandler.java index 1c1911aa0..f01f683a5 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/LoginSessionHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/LoginSessionHandler.java @@ -74,6 +74,8 @@ public class LoginSessionHandler implements MinecraftSessionHandler { public boolean handle(ServerLogin packet) { this.login = packet; if (mcConnection.getProtocolVersion().compareTo(MINECRAFT_1_13) >= 0) { + // To make sure the connecting client isn't Velocity, send a plugin message that Velocity will + // recognize and respond to. playerInfoId = ThreadLocalRandom.current().nextInt(); mcConnection.write(new LoginPluginMessage(playerInfoId, VELOCITY_IP_FORWARDING_CHANNEL, Unpooled.EMPTY_BUFFER)); diff --git a/proxy/src/main/java/com/velocitypowered/proxy/network/ConnectionManager.java b/proxy/src/main/java/com/velocitypowered/proxy/network/ConnectionManager.java index e6c72fb10..4d7d7c9e1 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/network/ConnectionManager.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/network/ConnectionManager.java @@ -13,12 +13,9 @@ import io.netty.channel.EventLoopGroup; import io.netty.channel.WriteBufferWaterMark; import io.netty.resolver.dns.DefaultDnsServerAddressStreamProvider; import io.netty.resolver.dns.DnsAddressResolverGroup; -import io.netty.resolver.dns.MultiDnsServerAddressStreamProvider; import java.net.InetSocketAddress; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -32,6 +29,9 @@ public final class ConnectionManager { private final EventLoopGroup bossGroup; private final EventLoopGroup workerGroup; private final VelocityServer server; + // This is intentionally made public for plugins like ViaVersion, which inject their own + // protocol logic into the proxy. + @SuppressWarnings("WeakerAccess") public final ServerChannelInitializerHolder serverChannelInitializer; private final DnsAddressResolverGroup resolverGroup; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/network/ServerChannelInitializer.java b/proxy/src/main/java/com/velocitypowered/proxy/network/ServerChannelInitializer.java index eb8edc39e..9e167906f 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/network/ServerChannelInitializer.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/network/ServerChannelInitializer.java @@ -52,7 +52,7 @@ public class ServerChannelInitializer extends ChannelInitializer { connection.setSessionHandler(new HandshakeSessionHandler(connection, this.server)); ch.pipeline().addLast(Connections.HANDLER, connection); - if (ServerChannelInitializer.this.server.getConfiguration().isProxyProtocol()) { + if (this.server.getConfiguration().isProxyProtocol()) { ch.pipeline().addFirst(new HAProxyMessageDecoder()); } } diff --git a/proxy/src/main/java/com/velocitypowered/proxy/network/ServerChannelInitializerHolder.java b/proxy/src/main/java/com/velocitypowered/proxy/network/ServerChannelInitializerHolder.java index f84e56e72..c9b2a772e 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/network/ServerChannelInitializerHolder.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/network/ServerChannelInitializerHolder.java @@ -11,7 +11,7 @@ public class ServerChannelInitializerHolder implements Supplier initializer; - public ServerChannelInitializerHolder(final ChannelInitializer initializer) { + ServerChannelInitializerHolder(final ChannelInitializer initializer) { this.initializer = initializer; } diff --git a/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java b/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java index d86ce016c..4a0a51b3f 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java @@ -25,25 +25,24 @@ public class MinecraftCompressDecoder extends MessageToMessageDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { - int expectedUncompressedSize = ProtocolUtils.readVarInt(in); - if (expectedUncompressedSize == 0) { + int expectedSize = ProtocolUtils.readVarInt(in); + if (expectedSize == 0) { // Strip the now-useless uncompressed size, this message is already uncompressed. out.add(in.retainedSlice()); in.skipBytes(in.readableBytes()); return; } - checkFrame(expectedUncompressedSize >= threshold, - "Uncompressed size %s is greater than threshold %s", - expectedUncompressedSize, threshold); + checkFrame(expectedSize >= threshold, "Uncompressed size %s is greater than threshold %s", + expectedSize, threshold); ByteBuf compatibleIn = ensureCompatible(ctx.alloc(), compressor, in); - int initialCapacity = Math.min(expectedUncompressedSize, MAXIMUM_INITIAL_BUFFER_SIZE); + int initialCapacity = Math.min(expectedSize, MAXIMUM_INITIAL_BUFFER_SIZE); ByteBuf uncompressed = preferredBuffer(ctx.alloc(), compressor, initialCapacity); try { compressor.inflate(compatibleIn, uncompressed); - checkFrame(expectedUncompressedSize == uncompressed.readableBytes(), + checkFrame(expectedSize == uncompressed.readableBytes(), "Mismatched compression sizes (got %s, expected %s)", - uncompressed.readableBytes(), expectedUncompressedSize); + uncompressed.readableBytes(), expectedSize); out.add(uncompressed); } catch (Exception e) { uncompressed.release(); diff --git a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/brigadier/VoidArgumentPropertySerializer.java b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/brigadier/VoidArgumentPropertySerializer.java index 797cbc360..7b19b4d60 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/brigadier/VoidArgumentPropertySerializer.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/brigadier/VoidArgumentPropertySerializer.java @@ -10,7 +10,7 @@ class VoidArgumentPropertySerializer> private final Supplier argumentSupplier; - public VoidArgumentPropertySerializer(Supplier argumentSupplier) { + private VoidArgumentPropertySerializer(Supplier argumentSupplier) { this.argumentSupplier = argumentSupplier; }