diff --git a/Launcher/source/client/ServerPinger.java b/Launcher/source/client/ServerPinger.java index e2851e6..66cd104 100644 --- a/Launcher/source/client/ServerPinger.java +++ b/Launcher/source/client/ServerPinger.java @@ -1,14 +1,5 @@ package launcher.client; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import java.time.Instant; -import java.util.regex.Pattern; - import com.eclipsesource.json.Json; import com.eclipsesource.json.JsonObject; import launcher.LauncherAPI; @@ -18,11 +9,21 @@ import launcher.serialize.HInput; import launcher.serialize.HOutput; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.time.Instant; +import java.util.regex.Pattern; + public final class ServerPinger { // Constants private static final String LEGACY_PING_HOST_MAGIC = "ยง1"; private static final String LEGACY_PING_HOST_CHANNEL = "MC|PingHost"; private static final Pattern LEGACY_PING_HOST_DELIMETER = Pattern.compile("\0", Pattern.LITERAL); + private static final int PACKET_LENGTH = 65535; // Instance private final InetSocketAddress address; @@ -136,7 +137,7 @@ } // Write handshake packet - output.writeByteArray(handshakePacket, IOHelper.BUFFER_SIZE); + output.writeByteArray(handshakePacket, PACKET_LENGTH); // Request status packet output.writeVarInt(1); // Status packet size (single byte) @@ -146,14 +147,14 @@ // Read outer status response packet ID // ab is a dirty fix for some servers (noticed KCauldron 1.7.10) String response; - int ab = IOHelper.verifyLength(input.readVarInt(), IOHelper.BUFFER_SIZE); - byte[] statusPacket = ab == 0x0 ? input.readByteArray(IOHelper.BUFFER_SIZE) : input.readByteArray(-ab); + int ab = IOHelper.verifyLength(input.readVarInt(), PACKET_LENGTH); + byte[] statusPacket = ab == 0x0 ? input.readByteArray(PACKET_LENGTH) : input.readByteArray(-ab); try (HInput packetInput = new HInput(statusPacket)) { int statusPacketID = packetInput.readVarInt(); if (statusPacketID != 0x0) { throw new IOException("Illegal status packet ID: " + statusPacketID); } - response = packetInput.readString(IOHelper.BUFFER_SIZE); + response = packetInput.readString(PACKET_LENGTH); LogHelper.debug("Ping response (modern): '%s'", response); }