From ea61d12749b7018a67c14412e0ecaeceaf6bb3e6 Mon Sep 17 00:00:00 2001
From: Yuriy Movchan <Yuriy.Movchan@gmail.com>
Date: Mon, 01 Aug 2022 07:38:53 +0000
Subject: [PATCH] Don't clone buffer in ldap codec (#248)

---
 opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LdapCodec.java |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LdapCodec.java b/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LdapCodec.java
index cdc62e7..0df37d8 100644
--- a/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LdapCodec.java
+++ b/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LdapCodec.java
@@ -55,13 +55,14 @@
     public NextAction handleRead(final FilterChainContext ctx) throws IOException {
         try {
             final Buffer buffer = ctx.getMessage();
-            try (final ASN1BufferReader reader = new ASN1BufferReader(maxASN1ElementSize, buffer)) {
+            final ASN1BufferReader reader = new ASN1BufferReader(maxASN1ElementSize, buffer);
                 // Due to a bug in grizzly's ByteBufferWrapper.split(), we can't use byteBuffer.mark()
                 final int mark = buffer.position();
                 if (!reader.elementAvailable()) {
                     buffer.position(mark);
                     // We need to create a duplicate because buffer will be closed by the reader (try-with-resources)
-                    return ctx.getStopAction(buffer.duplicate());
+//                  final Buffer bufferDuplicated = buffer.duplicate();
+                    return ctx.getStopAction(buffer);
                 }
                 final int length = reader.peekLength();
                 if (length > maxASN1ElementSize) {
@@ -74,9 +75,8 @@
                         : null;
                 buffer.position(mark);
                 ctx.setMessage(decodePacket(new ASN1BufferReader(maxASN1ElementSize, buffer.asReadOnlyBuffer())));
-                buffer.tryDispose();
+                reader.close();
                 return ctx.getInvokeAction(remainder);
-            }
         } catch (Exception e) {
             onLdapCodecError(ctx, e);
             ctx.getConnection().closeSilently();

--
Gitblit v1.10.0