diff --git a/netty_parser/src/main/java/org/dna/mqtt/moquette/parser/netty/SubAckEncoder.java b/netty_parser/src/main/java/org/dna/mqtt/moquette/parser/netty/SubAckEncoder.java index 89db454b..194161b9 100644 --- a/netty_parser/src/main/java/org/dna/mqtt/moquette/parser/netty/SubAckEncoder.java +++ b/netty_parser/src/main/java/org/dna/mqtt/moquette/parser/netty/SubAckEncoder.java @@ -17,24 +17,18 @@ class SubAckEncoder extends DemuxEncoder { throw new IllegalArgumentException("Found a suback message with empty topics"); } - ByteBuf variableHeaderBuff = chc.alloc().buffer(4); - ByteBuf buff = null; + int variableHeaderSize = 2 + message.types().size(); + ByteBuf buff = chc.alloc().buffer(6 + variableHeaderSize); try { - variableHeaderBuff.writeShort(message.getMessageID()); - for (AbstractMessage.QOSType c : message.types()) { - variableHeaderBuff.writeByte(c.ordinal()); - } - - int variableHeaderSize = variableHeaderBuff.readableBytes(); - buff = chc.alloc().buffer(2 + variableHeaderSize); - buff.writeByte(AbstractMessage.SUBACK << 4 ); buff.writeBytes(Utils.encodeRemainingLength(variableHeaderSize)); - buff.writeBytes(variableHeaderBuff); + buff.writeShort(message.getMessageID()); + for (AbstractMessage.QOSType c : message.types()) { + buff.writeByte(c.ordinal()); + } out.writeBytes(buff); } finally { - variableHeaderBuff.release(); buff.release(); } }