diff options
author | Tim Brooks <tim@uncontended.net> | 2017-06-29 11:03:51 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-29 11:03:51 -0500 |
commit | 6c58f0c4e62a515dcbb19e0b7564c45988b24797 (patch) | |
tree | 4eeb95f1c77d7409f53e9d5f791ad5dfeabc4078 /test/framework | |
parent | acade2b40a42d4bb9f206d6e0f4fc7743910d15a (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.
Diffstat (limited to 'test/framework')
-rw-r--r-- | test/framework/src/main/java/org/elasticsearch/transport/nio/channel/TcpReadContext.java | 8 |
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); } |