Fixed legacy ping passthrough not working when eaglercraft support is enabled

This commit is contained in:
RaphiMC 2023-04-19 15:48:55 +02:00
parent 981a80d258
commit f66bc3c435
2 changed files with 5 additions and 8 deletions

View File

@ -55,12 +55,12 @@ public class Client2ProxyChannelInitializer extends MinecraftChannelInitializer
return;
}
if (Options.LEGACY_CLIENT_PASSTHROUGH) {
channel.pipeline().addLast(LEGACY_PASSTHROUGH_HANDLER_NAME, new LegacyClientPassthroughHandler());
}
if (Options.ALLOW_EAGLERCRAFT_CLIENTS) {
channel.pipeline().addLast(EAGLERCRAFT_INITIAL_HANDLER_NAME, new EaglercraftInitialHandler());
}
if (Options.LEGACY_CLIENT_PASSTHROUGH) {
channel.pipeline().addLast(LEGACY_PASSTHROUGH_HANDLER_NAME, new LegacyClientPassthroughHandler());
}
super.initChannel(channel);
channel.attr(MCPipeline.PACKET_REGISTRY_ATTRIBUTE_KEY).set(PacketRegistryUtil.getHandshakeRegistry(false));

View File

@ -52,11 +52,8 @@ public class EaglercraftInitialHandler extends ByteToMessageDecoder {
if (!ctx.channel().isOpen()) return;
if (!in.isReadable()) return;
if (in.readableBytes() >= 3) {
final byte[] data = new byte[3];
in.getBytes(0, data);
final String method = new String(data, StandardCharsets.UTF_8);
if (method.equals("GET")) { // Websocket request
if (in.readableBytes() >= 3 || in.getByte(0) != 'G') {
if (in.readableBytes() >= 3 && in.getCharSequence(0, 3, StandardCharsets.UTF_8).equals("GET")) { // Websocket request
if (sslContext != null) {
ctx.pipeline().addBefore(Client2ProxyChannelInitializer.EAGLERCRAFT_INITIAL_HANDLER_NAME, Client2ProxyChannelInitializer.WEBSOCKET_SSL_HANDLER_NAME, sslContext.newHandler(ctx.alloc()));
}