summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Brooks <tim@uncontended.net>2017-06-29 11:03:51 -0500
committerGitHub <noreply@github.com>2017-06-29 11:03:51 -0500
commit6c58f0c4e62a515dcbb19e0b7564c45988b24797 (patch)
tree4eeb95f1c77d7409f53e9d5f791ad5dfeabc4078
parentacade2b40a42d4bb9f206d6e0f4fc7743910d15a (diff)
Handle ping correctly in NioTransport (#25462)
Our current TCPTransport logic assumes that we do not pass pings to the TCPTransport level. This commit fixes an issue where NioTransport was passing pings to TCPTransport and leading to exceptions.
-rw-r--r--test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java8
1 files changed, 7 insertions, 1 deletions
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 c332adbd31..ee56f6f6f9 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 class TcpReadContext implements ReadContext {
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);
@@ -75,7 +77,11 @@ public class TcpReadContext implements ReadContext {
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);
}