You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jo...@apache.org on 2020/05/07 13:34:01 UTC

[mina] branch bugfix/DIRMINA-1126 created (now 129bdfb)

This is an automated email from the ASF dual-hosted git repository.

johnnyv pushed a change to branch bugfix/DIRMINA-1126
in repository https://gitbox.apache.org/repos/asf/mina.git.


      at 129bdfb  Fixes reuse of filter argument WriteRequest when more than one Object is produced by the ProtocolEncoder

This branch includes the following new commits:

     new 129bdfb  Fixes reuse of filter argument WriteRequest when more than one Object is produced by the ProtocolEncoder

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[mina] 01/01: Fixes reuse of filter argument WriteRequest when more than one Object is produced by the ProtocolEncoder

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

johnnyv pushed a commit to branch bugfix/DIRMINA-1126
in repository https://gitbox.apache.org/repos/asf/mina.git

commit 129bdfb13bf884b1d283a4427fb3784772800d64
Author: johnnyv <jo...@apache.org>
AuthorDate: Thu May 7 09:33:32 2020 -0400

    Fixes reuse of filter argument WriteRequest when more than one Object is
    produced by the ProtocolEncoder
---
 .../apache/mina/core/write/DefaultWriteRequest.java   |  2 +-
 .../apache/mina/filter/codec/ProtocolCodecFilter.java | 19 ++++++++++++-------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java b/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java
index 8324c6a..49fe961 100644
--- a/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java
+++ b/mina-core/src/main/java/org/apache/mina/core/write/DefaultWriteRequest.java
@@ -221,7 +221,7 @@ public class DefaultWriteRequest implements WriteRequest {
         }
 
         this.message = message;
-        originalMessage = message;
+        this.originalMessage = message;
         
         if (message instanceof IoBuffer) {
             // duplicate it, so that any modification made on it
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 628e4f2..a460b3d 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
@@ -333,13 +333,18 @@ public class ProtocolCodecFilter extends IoFilterAdapter {
                     break;
                 }
 
-                // Flush only when the buffer has remaining.
-                if (!(encodedMessage instanceof IoBuffer) || ((IoBuffer) encodedMessage).hasRemaining()) {
-                    writeRequest.setMessage(encodedMessage);
-
-                    nextFilter.filterWrite(session, writeRequest);
-                }
-            }
+		// Flush only when the buffer has remaining.
+		if (!(encodedMessage instanceof IoBuffer) || ((IoBuffer) encodedMessage).hasRemaining()) {
+		    if (bufferQueue.isEmpty()) {
+			writeRequest.setMessage(encodedMessage);
+			nextFilter.filterWrite(session, writeRequest);
+		    } else {
+			SocketAddress destination = writeRequest.getDestination();
+			WriteRequest encodedWriteRequest = new EncodedWriteRequest(encodedMessage, null, destination);
+			nextFilter.filterWrite(session, encodedWriteRequest);
+		    }
+		}
+	    }
         } catch (Exception e) {
             ProtocolEncoderException pee;