diff --git a/src/org/redkale/net/Response.java b/src/org/redkale/net/Response.java index eeb6e2a83..102b350dd 100644 --- a/src/org/redkale/net/Response.java +++ b/src/org/redkale/net/Response.java @@ -168,7 +168,14 @@ public abstract class Response> { } public void finish(final byte[] bs) { - finish(ByteBuffer.wrap(bs)); + if (this.context.bufferCapacity == bs.length) { + ByteBuffer buffer = this.context.pollBuffer(); + buffer.put(bs); + buffer.flip(); + this.finish(buffer); + } else { + this.finish(ByteBuffer.wrap(bs)); + } } public void finish(ByteBuffer buffer) { diff --git a/src/org/redkale/net/http/HttpResponse.java b/src/org/redkale/net/http/HttpResponse.java index acf6854ed..7ba7b715c 100644 --- a/src/org/redkale/net/http/HttpResponse.java +++ b/src/org/redkale/net/http/HttpResponse.java @@ -363,7 +363,14 @@ public class HttpResponse extends Response { */ @Override public void finish(final byte[] bs) { - finish(false, ByteBuffer.wrap(bs)); + if (this.context.getBufferCapacity() == bs.length) { + ByteBuffer buffer = this.context.pollBuffer(); + buffer.put(bs); + buffer.flip(); + this.finish(false, buffer); + } else { + this.finish(false, ByteBuffer.wrap(bs)); + } } /**