diff --git a/distribution/pom.xml b/distribution/pom.xml
index c51fdc117..311647897 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -24,7 +24,7 @@
mina-parent
org.apache.mina
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
distribution
diff --git a/mina-core/pom.xml b/mina-core/pom.xml
index 6cf37de85..0c64fcb43 100644
--- a/mina-core/pom.xml
+++ b/mina-core/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-core
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..102c99ec8 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,7 @@ public void fire() {
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/core/polling/AbstractPollingIoProcessor.java b/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
index 8b13e99ea..1106a3509 100644
--- a/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
+++ b/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
@@ -537,12 +537,15 @@ private void read(S session) {
if (readBytes > 0) {
IoFilterChain filterChain = session.getFilterChain();
filterChain.fireMessageReceived(buf);
+ buf.free();
buf = null;
if (hasFragmentation) {
if (readBytes << 1 < config.getReadBufferSize()) {
+ if (LOG.isDebugEnabled()) LOG.debug("Decrease read buffer size: current: " + config.getReadBufferSize());
session.decreaseReadBufferSize();
} else if (readBytes == config.getReadBufferSize()) {
+ if (LOG.isDebugEnabled()) LOG.debug("Increase read buffer size: current: " + config.getReadBufferSize());
session.increaseReadBufferSize();
}
}
diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java b/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java
index e369ba916..833090a5b 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java
@@ -57,7 +57,7 @@ public void write(Object encodedMessage) {
if (encodedMessage instanceof IoBuffer) {
IoBuffer buf = (IoBuffer) encodedMessage;
if (buf.hasRemaining()) {
- messageQueue.offer(buf);
+ messageQueue.offer(buf.duplicate());
} else {
throw new IllegalArgumentException("buf is empty. Forgot to call flip()?");
}
@@ -100,6 +100,7 @@ public void mergeAll() {
}
newBuf.put(buf);
+ buf.free();
}
// Push the new buffer finally.
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 fc3ace994..a6fa946d9 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,9 +165,12 @@ public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) th
newBuf.put(buf);
newBuf.put(in);
newBuf.flip();
+ buf.free();
buf = newBuf;
// Update the session attribute.
+ //IoBuffer oldBuf = (IoBuffer) session.getAttribute(BUFFER);
+ //if (oldBuf != null) oldBuf.free();
session.setAttribute(BUFFER, buf);
}
} else {
@@ -234,8 +237,9 @@ public void dispose(IoSession session) throws Exception {
}
private void removeSessionBuffer(IoSession session) {
- session.removeAttribute(BUFFER);
- }
+ IoBuffer oldBuf = (IoBuffer) session.removeAttribute(BUFFER);
+ if (oldBuf != null) oldBuf.free();
+ }
private void storeRemainingInSession(IoBuffer buf, IoSession session) {
final IoBuffer remainingBuf = IoBuffer.allocate(buf.capacity()).setAutoExpand(true);
@@ -243,6 +247,8 @@ private void storeRemainingInSession(IoBuffer buf, IoSession session) {
remainingBuf.order(buf.order());
remainingBuf.put(buf);
+ IoBuffer oldBuf = (IoBuffer) session.removeAttribute(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 628e4f244..5e1b37f64 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
@@ -281,6 +281,7 @@ public void messageReceived(NextFilter nextFilter, IoSession session, Object mes
}
}
}
+ //in.free();
}
/**
diff --git a/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java b/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
index 273d805ac..14e068681 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
@@ -26,6 +26,7 @@
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
+import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.filterchain.IoFilterAdapter;
import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.core.filterchain.IoFilterEvent;
@@ -563,8 +564,13 @@ public final void exceptionCaught(NextFilter nextFilter, IoSession session, Thro
@Override
public final void messageReceived(NextFilter nextFilter, IoSession session, Object message) {
if (eventTypes.contains(IoEventType.MESSAGE_RECEIVED)) {
- IoFilterEvent event = new IoFilterEvent(nextFilter, IoEventType.MESSAGE_RECEIVED, session, message);
- fireEvent(event);
+ if (message instanceof IoBuffer) {
+ IoFilterEvent event = new IoFilterEvent(nextFilter, IoEventType.MESSAGE_RECEIVED, session, ((IoBuffer)message).duplicate());
+ fireEvent(event);
+ } else {
+ IoFilterEvent event = new IoFilterEvent(nextFilter, IoEventType.MESSAGE_RECEIVED, session, message);
+ fireEvent(event);
+ }
} else {
nextFilter.messageReceived(session, message);
}
diff --git a/mina-example/pom.xml b/mina-example/pom.xml
index 812560b88..1993d3c23 100644
--- a/mina-example/pom.xml
+++ b/mina-example/pom.xml
@@ -21,7 +21,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-example
diff --git a/mina-filter-compression/pom.xml b/mina-filter-compression/pom.xml
index 7979560bd..7216f3fd8 100644
--- a/mina-filter-compression/pom.xml
+++ b/mina-filter-compression/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-filter-compression
diff --git a/mina-http/pom.xml b/mina-http/pom.xml
index 636c35a26..67491a04a 100644
--- a/mina-http/pom.xml
+++ b/mina-http/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-http
diff --git a/mina-integration-beans/pom.xml b/mina-integration-beans/pom.xml
index cb524232f..4d768a02d 100644
--- a/mina-integration-beans/pom.xml
+++ b/mina-integration-beans/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-integration-beans
diff --git a/mina-integration-jmx/pom.xml b/mina-integration-jmx/pom.xml
index cd192c155..5646c77f0 100644
--- a/mina-integration-jmx/pom.xml
+++ b/mina-integration-jmx/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-integration-jmx
diff --git a/mina-integration-ognl/pom.xml b/mina-integration-ognl/pom.xml
index dd2cb960a..3e51d8b11 100644
--- a/mina-integration-ognl/pom.xml
+++ b/mina-integration-ognl/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-integration-ognl
diff --git a/mina-integration-xbean/pom.xml b/mina-integration-xbean/pom.xml
index d1905b2a5..9eec816d6 100644
--- a/mina-integration-xbean/pom.xml
+++ b/mina-integration-xbean/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-integration-xbean
diff --git a/mina-legal/pom.xml b/mina-legal/pom.xml
index 1f890eb53..7bc385bd1 100644
--- a/mina-legal/pom.xml
+++ b/mina-legal/pom.xml
@@ -21,7 +21,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-legal
diff --git a/mina-statemachine/pom.xml b/mina-statemachine/pom.xml
index eba084c7e..fb498f2f2 100644
--- a/mina-statemachine/pom.xml
+++ b/mina-statemachine/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-statemachine
diff --git a/mina-transport-apr/pom.xml b/mina-transport-apr/pom.xml
index f4be13a13..d5eb333b2 100644
--- a/mina-transport-apr/pom.xml
+++ b/mina-transport-apr/pom.xml
@@ -22,7 +22,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-transport-apr
diff --git a/mina-transport-serial/pom.xml b/mina-transport-serial/pom.xml
index 585eab3ce..45132f9cd 100644
--- a/mina-transport-serial/pom.xml
+++ b/mina-transport-serial/pom.xml
@@ -24,7 +24,7 @@
org.apache.mina
mina-parent
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-transport-serial
diff --git a/pom.xml b/pom.xml
index ee464a63c..814ecadb6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
org.apache.mina
- 2.1.4-SNAPSHOT
+ 2.1.4-PSG
mina-parent
Apache MINA
pom