You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2011/07/23 09:09:28 UTC

svn commit: r1150057 - in /mina/branches/3.0/core/src/main/java/org/apache/mina: api/IoFilterChain.java filterchain/DefaultIoFilterChain.java session/AbstractIoSession.java

Author: jvermillard
Date: Sat Jul 23 07:09:28 2011
New Revision: 1150057

URL: http://svn.apache.org/viewvc?rev=1150057&view=rev
Log:
fix the case where a filter in the chain dpesn't return a message on read/write but null because it's accumulating

Modified:
    mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilterChain.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java

Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilterChain.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilterChain.java?rev=1150057&r1=1150056&r2=1150057&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilterChain.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilterChain.java Sat Jul 23 07:09:28 2011
@@ -90,9 +90,8 @@ public interface IoFilterChain {
      * This processing is done in reverse order.
      * @param session {@link IoSession} associated with this message
      * @param message the received message
-     * @return the message after the processing of each filter
      */
-    Object processMessageReceived(IoSession session, Object message);
+    void processMessageReceived(IoSession session, Object message);
 
     /**
      * Call this method for processing a message for writing using this chain.

Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java?rev=1150057&r1=1150056&r2=1150057&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java Sat Jul 23 07:09:28 2011
@@ -81,11 +81,14 @@ public class DefaultIoFilterChain implem
     }
 
     @Override
-    public Object processMessageReceived(IoSession session, Object message) {
+    public void processMessageReceived(IoSession session, Object message) {
         for (IoFilter filter : chain) {
             message = filter.messageReceived(session, message);
+            if (message == null) {
+                // no message was produced by the filter, it's probably accumulating messages
+                break;
+            }
         }
-        return message;
     }
 
     @Override
@@ -93,6 +96,11 @@ public class DefaultIoFilterChain implem
         int len = chain.size();
         for (int i = 1; i <= len; i++) {
             message = chain.get(len - i).messageWriting(session, message);
+            if (message == null) {
+                // no message was produced by the filter, it's probably accumulating messages
+                return null;
+            }
+
         }
         return message;
     }

Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java?rev=1150057&r1=1150056&r2=1150057&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java Sat Jul 23 07:09:28 2011
@@ -230,6 +230,8 @@ public abstract class AbstractIoSession 
 
         // process the queue
         message = getFilterChain().processMessageWriting(this, message);
+        if (message == null)
+            return;
 
         writeQueue.add(new DefaultWriteRequest(message));