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