Try to decode multiple packets at once

This commit is contained in:
Andrew Steinborn
2019-11-15 00:39:11 -05:00
parent d333eb30b8
commit ba8629ca0e

View File

@@ -11,10 +11,7 @@ public class MinecraftVarintFrameDecoder extends ByteToMessageDecoder {
@Override @Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception { protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
if (!in.isReadable()) { read_lens: while (in.isReadable()) {
return;
}
int origReaderIndex = in.readerIndex(); int origReaderIndex = in.readerIndex();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
if (!in.isReadable()) { if (!in.isReadable()) {
@@ -30,14 +27,15 @@ public class MinecraftVarintFrameDecoder extends ByteToMessageDecoder {
if (in.readableBytes() >= packetLength) { if (in.readableBytes() >= packetLength) {
out.add(in.readRetainedSlice(packetLength)); out.add(in.readRetainedSlice(packetLength));
continue read_lens;
} else { } else {
in.readerIndex(origReaderIndex); in.readerIndex(origReaderIndex);
}
return; return;
} }
} }
}
throw new CorruptedFrameException("VarInt too big"); throw new CorruptedFrameException("VarInt too big");
} }
}
} }