diff --git a/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/ClientMessage.java b/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/ClientMessage.java index a722449a9c627..2e2142faceb02 100644 --- a/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/ClientMessage.java +++ b/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/ClientMessage.java @@ -371,7 +371,7 @@ public boolean readFrom(ByteBuffer src) { //we don't have even the frame length ready return false; } - frameLength = Bits.readIntL(src.array(), 0); + frameLength = Bits.readIntL(src.array(), src.position()); if (USE_UNSAFE) { wrap(new UnsafeBuffer(new byte[frameLength]), 0); } else { diff --git a/hazelcast/src/test/java/com/hazelcast/client/protocol/ClientMessageAccumulatorTest.java b/hazelcast/src/test/java/com/hazelcast/client/protocol/ClientMessageAccumulatorTest.java index 5304b00a50eac..c6a813e37015f 100644 --- a/hazelcast/src/test/java/com/hazelcast/client/protocol/ClientMessageAccumulatorTest.java +++ b/hazelcast/src/test/java/com/hazelcast/client/protocol/ClientMessageAccumulatorTest.java @@ -25,7 +25,8 @@ public class ClientMessageAccumulatorTest { - private static final byte[] BYTE_DATA = new byte[] { 24, 0, 0, 0 ,0, 0, 0 ,0, 0, 0 ,0, 0, 0 ,0, 0, 0 ,0, 0, 0 ,0, 0, 0, 0, 0, 0, 0 }; + private static final byte[] BYTE_DATA = new byte[] { 0, 0, 24, 0, 0, 0 ,0, 0, 0 ,0, 0, 0 ,0, 0, 0 ,0, 0, 0 ,0, 0, 0 ,0, 0, 0, 0, 0, 0, 0 }; + private static final int OFFSET = 2; @Before public void setUp() { @@ -39,13 +40,14 @@ public void tearDown() { public void shouldAccumulateClientMessageCorrectly() { ClientMessage accumulator = ClientMessage.create(); final ByteBuffer inBuffer = ByteBuffer.wrap(BYTE_DATA); + inBuffer.position(OFFSET); accumulator.readFrom(inBuffer); final ByteBuffer byteBuffer = accumulatedByteBuffer(accumulator.buffer(), accumulator.index()); assertEquals(0, byteBuffer.position()); assertEquals(accumulator.getFrameLength(), byteBuffer.limit()); - for (int i = 0; i < byteBuffer.limit(); i++) { + for (int i = OFFSET; i < byteBuffer.limit(); i++) { assertEquals(BYTE_DATA[i], byteBuffer.get()); } assertTrue(accumulator.isComplete());