diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Utils.java b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Utils.java index 0f29bb0c139..0daf406aa11 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Utils.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Utils.java @@ -109,6 +109,8 @@ public class Netty4Utils { final int readableBytes = buffer.readableBytes(); if (readableBytes == 0) { return BytesArray.EMPTY; + } else if (buffer.hasArray()) { + return new BytesArray(buffer.array(), buffer.arrayOffset() + buffer.readerIndex(), readableBytes); } else { final ByteBuffer[] byteBuffers = buffer.nioBuffers(); return BytesReference.fromByteBuffers(byteBuffers); diff --git a/plugins/transport-nio/src/main/java/org/elasticsearch/http/nio/ByteBufUtils.java b/plugins/transport-nio/src/main/java/org/elasticsearch/http/nio/ByteBufUtils.java index 6e041b354ec..2d7efaeb689 100644 --- a/plugins/transport-nio/src/main/java/org/elasticsearch/http/nio/ByteBufUtils.java +++ b/plugins/transport-nio/src/main/java/org/elasticsearch/http/nio/ByteBufUtils.java @@ -66,6 +66,8 @@ class ByteBufUtils { final int readableBytes = buffer.readableBytes(); if (readableBytes == 0) { return BytesArray.EMPTY; + } else if (buffer.hasArray()) { + return new BytesArray(buffer.array(), buffer.arrayOffset() + buffer.readerIndex(), readableBytes); } else { final ByteBuffer[] byteBuffers = buffer.nioBuffers(); return BytesReference.fromByteBuffers(byteBuffers);