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/08 18:34:46 UTC

[mina] 03/03: Merge bugfix/DIRMINA-1126

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

johnnyv pushed a commit to branch 2.1.X
in repository https://gitbox.apache.org/repos/asf/mina.git

commit 37a004b9193d64ff12c790be7f97b842452803e3
Author: johnnyv <jo...@apache.org>
AuthorDate: Fri May 8 14:22:33 2020 -0400

    Merge bugfix/DIRMINA-1126
---
 .../apache/mina/core/write/DefaultWriteRequest.java   |  2 +-
 .../apache/mina/filter/codec/ProtocolCodecFilter.java | 19 ++++++++++++-------
 .../mina/transport/socket/nio/NioSocketAcceptor.java  |  6 ++----
 3 files changed, 15 insertions(+), 12 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;
 
diff --git a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
index 5090d78..dc9e302 100644
--- a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
+++ b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
@@ -266,10 +266,8 @@ implements SocketAcceptor {
             } catch (IOException ioe) {
                 // Add some info regarding the address we try to bind to the
                 // message
-                String newMessage = "Error while binding on " + localAddress + "\n" + "original message : "
-                        + ioe.getMessage();
-                Exception e = new IOException(newMessage);
-                e.initCause(ioe.getCause());
+                String newMessage = "Error while binding on " + localAddress;
+                Exception e = new IOException(newMessage, ioe);
 
                 // And close the channel
                 channel.close();