Returned framed buffers should be flipped

Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
TheMode 2021-10-26 00:05:03 +02:00
parent 00401bed25
commit 23d59cb135
2 changed files with 7 additions and 8 deletions

View File

@ -262,7 +262,7 @@ public class PlayerSocketConnection extends PlayerConnection {
} }
private void writePacket(@NotNull ServerPacket packet) { private void writePacket(@NotNull ServerPacket packet) {
write(PacketUtils.createFramedPacket(packet, compressed).flip()); write(PacketUtils.createFramedPacket(packet, compressed));
} }
public void writeAndFlush(@NotNull ServerPacket packet) { public void writeAndFlush(@NotNull ServerPacket packet) {

View File

@ -119,8 +119,7 @@ public final class PacketUtils {
// Send grouped packet... // Send grouped packet...
if (!PACKET_LISTENER_MANAGER.processServerPacket(packet, players)) if (!PACKET_LISTENER_MANAGER.processServerPacket(packet, players))
return; return;
final ByteBuffer finalBuffer = createFramedPacket(packet).flip(); final FramedPacket framedPacket = new FramedPacket(packet, createFramedPacket(packet));
final FramedPacket framedPacket = new FramedPacket(packet, finalBuffer);
// Send packet to all players // Send packet to all players
for (Player player : players) { for (Player player : players) {
if (!player.isOnline() || !playerValidator.isValid(player)) if (!player.isOnline() || !playerValidator.isValid(player))
@ -222,7 +221,7 @@ public final class PacketUtils {
public static ByteBuffer createFramedPacket(@NotNull ServerPacket packet, boolean compression) { public static ByteBuffer createFramedPacket(@NotNull ServerPacket packet, boolean compression) {
ByteBuffer buffer = PACKET_BUFFER.get().clear(); ByteBuffer buffer = PACKET_BUFFER.get().clear();
writeFramedPacket(buffer, packet, compression); writeFramedPacket(buffer, packet, compression);
return buffer; return buffer.flip();
} }
@ApiStatus.Internal @ApiStatus.Internal
@ -232,9 +231,9 @@ public final class PacketUtils {
@ApiStatus.Internal @ApiStatus.Internal
public static FramedPacket allocateTrimmedPacket(@NotNull ServerPacket packet) { public static FramedPacket allocateTrimmedPacket(@NotNull ServerPacket packet) {
final ByteBuffer temp = PacketUtils.createFramedPacket(packet).flip(); final ByteBuffer temp = PacketUtils.createFramedPacket(packet);
final ByteBuffer buffer = ByteBuffer.allocateDirect(temp.remaining()) final int size = temp.remaining();
.put(temp).flip(); final ByteBuffer buffer = ByteBuffer.allocateDirect(size).put(0, temp, 0, size);
return new FramedPacket(packet, buffer); return new FramedPacket(packet, buffer);
} }
@ -248,7 +247,7 @@ public final class PacketUtils {
} }
private synchronized void append(Viewable viewable, ServerPacket serverPacket, Player player) { private synchronized void append(Viewable viewable, ServerPacket serverPacket, Player player) {
final ByteBuffer framedPacket = createFramedPacket(serverPacket).flip(); final ByteBuffer framedPacket = createFramedPacket(serverPacket);
final int packetSize = framedPacket.limit(); final int packetSize = framedPacket.limit();
if (packetSize >= buffer.capacity()) { if (packetSize >= buffer.capacity()) {
process(viewable); process(viewable);