13
0
geforkt von Mirrors/Velocity

Try to decode multiple packets at once

Dieser Commit ist enthalten in:
Andrew Steinborn 2019-11-15 00:39:11 -05:00
Ursprung d333eb30b8
Commit ba8629ca0e

Datei anzeigen

@ -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");
} }
}
} }