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