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);
     }
     

Reply via email to