From df98d09478736f6d70b161da96cea9c723778a2a Mon Sep 17 00:00:00 2001 From: emmanuel lecharny Date: Thu, 18 Apr 2024 14:40:38 +0200 Subject: [PATCH] Free a useless buffer. --- .../filter/codec/CumulativeProtocolDecoder.java | 13 +++++++++++++ .../mina/filter/codec/ProtocolCodecFilter.java | 2 ++ 2 files changed, 15 insertions(+) diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java b/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java index 73b00b909..eeb3e13d1 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java @@ -169,6 +169,12 @@ public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) th buf = newBuf; // Update the session attribute. + IoBuffer oldBuf = (IoBuffer) session.getAttribute(BUFFER); + + if (oldBuf != null) { + oldBuf.free(); + } + session.setAttribute(BUFFER, buf); } } else { @@ -236,6 +242,7 @@ public void dispose(IoSession session) throws Exception { private void removeSessionBuffer(IoSession session) { IoBuffer buf = (IoBuffer) session.removeAttribute(BUFFER); + if (buf != null) { buf.free(); } @@ -247,6 +254,12 @@ private void storeRemainingInSession(IoBuffer buf, IoSession session) { remainingBuf.order(buf.order()); remainingBuf.put(buf); + IoBuffer oldBuf = (IoBuffer) session.getAttribute(BUFFER); + + if (oldBuf != null) { + oldBuf.free(); + } + session.setAttribute(BUFFER, remainingBuf); } diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java index 06a11c93b..1f46c7524 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java @@ -273,6 +273,8 @@ public void messageReceived(final NextFilter nextFilter, final IoSession session } } } + + in.free(); } /**