From be79a8c5f5cf03bec3f72dd77ce1f6ccf372e8d5 Mon Sep 17 00:00:00 2001 From: Tim Brooks Date: Wed, 28 Jun 2017 22:12:26 -0500 Subject: [PATCH 1/2] Fix handling for pings --- .../elasticsearch/transport/nio/channel/TcpReadContext.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java b/test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java index c332adbd3142c..b04d4c66f352b 100644 --- a/test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java +++ b/test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java @@ -75,7 +75,11 @@ public int read() throws IOException { try { BytesReference messageWithoutHeader = message.slice(6, message.length() - 6); - handler.handleMessage(messageWithoutHeader, channel, channel.getProfile(), messageWithoutHeader.length()); + + // A message length of 6 bytes it is just a ping. Ignore for now. + if (messageLengthWithHeader != 6) { + handler.handleMessage(messageWithoutHeader, channel, channel.getProfile(), messageWithoutHeader.length()); + } } catch (Exception e) { handler.handleException(channel, e); } From e77b663ca98b7d0117718fa699bc274beeeeddf3 Mon Sep 17 00:00:00 2001 From: Tim Brooks Date: Thu, 29 Jun 2017 10:53:37 -0500 Subject: [PATCH 2/2] Add comment about frame decoder --- .../org/elasticsearch/transport/nio/channel/TcpReadContext.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java b/test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java index b04d4c66f352b..ee56f6f6f9763 100644 --- a/test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java +++ b/test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java @@ -67,6 +67,8 @@ public int read() throws IOException { BytesReference message; + // Frame decoder will throw an exception if the message is improperly formatted, the header is incorrect, + // or the message is corrupted while ((message = frameDecoder.decode(createCompositeBuffer(), rawBytesCount)) != null) { int messageLengthWithHeader = message.length(); NetworkBytesReference.vectorizedIncrementReadIndexes(references, messageLengthWithHeader);