This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a commit to branch 2.1.X
in repository https://gitbox.apache.org/repos/asf/mina.git
The following commit(s) were added to refs/heads/2.1.X by this push:
new 88cb55397 Applied patch provided by David Robison already 4 years ago
:/ (https://github.com/apache/mina/pull/28)
88cb55397 is described below
commit 88cb55397c414c6d09ce2d085ce912ab4bf45bf3
Author: emmanuel lecharny <[email protected]>
AuthorDate: Thu Oct 31 11:13:25 2024 +0100
Applied patch provided by David Robison already 4 years ago :/
(https://github.com/apache/mina/pull/28)
---
.../apache/mina/core/filterchain/IoFilterEvent.java | 6 ++++++
.../mina/filter/codec/CumulativeProtocolDecoder.java | 19 +++++++++++++++++--
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git
a/mina-core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java
b/mina-core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java
index 99901dc64..4e1a64fcd 100644
---
a/mina-core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java
+++
b/mina-core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java
@@ -19,6 +19,7 @@
*/
package org.apache.mina.core.filterchain;
+import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.filterchain.IoFilter.NextFilter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoEvent;
@@ -104,6 +105,11 @@ public class IoFilterEvent extends IoEvent {
case MESSAGE_RECEIVED:
Object parameter = getParameter();
nextFilter.messageReceived(session, parameter);
+
+ if (parameter instanceof IoBuffer) {
+ ((IoBuffer)parameter).free();
+ }
+
break;
case MESSAGE_SENT:
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 4b7932d69..2750a1b44 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
@@ -165,6 +165,7 @@ public abstract class CumulativeProtocolDecoder extends
ProtocolDecoderAdapter {
newBuf.put(buf);
newBuf.put(in);
newBuf.flip();
+ buf.free();
buf = newBuf;
// Update the session attribute.
@@ -230,11 +231,19 @@ public abstract class CumulativeProtocolDecoder extends
ProtocolDecoderAdapter {
*/
@Override
public void dispose(IoSession session) throws Exception {
- removeSessionBuffer(session);
+ IoBuffer oldBuf = (IoBuffer) session.removeAttribute(BUFFER);
+
+ if (oldBuf != null) {
+ oldBuf.free();
+ }
}
private void removeSessionBuffer(IoSession session) {
- session.removeAttribute(BUFFER);
+ IoBuffer oldBuf = (IoBuffer) session.getAttribute(BUFFER);
+
+ if (oldBuf != null) {
+ oldBuf.free();
+ }
}
private void storeRemainingInSession(IoBuffer buf, IoSession session) {
@@ -243,6 +252,12 @@ public abstract class CumulativeProtocolDecoder extends
ProtocolDecoderAdapter {
remainingBuf.order(buf.order());
remainingBuf.put(buf);
+ IoBuffer oldBuf = (IoBuffer) session.removeAttribute(BUFFER);
+
+ if (oldBuf != null) {
+ oldBuf.free();
+ }
+
session.setAttribute(BUFFER, remainingBuf);
}