Updated Branches:
  refs/heads/master 11415ce63 -> 74946f1b6

[SSHD-252] SshException MAC Error in 
org.apache.sshd.common.session.AbstractSession.decode when using 
Nio2ServiceFactory

Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/74946f1b
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/74946f1b
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/74946f1b

Branch: refs/heads/master
Commit: 74946f1b68ffdd207af5b6102693030e39693340
Parents: 11415ce
Author: Guillaume Nodet <[email protected]>
Authored: Tue Dec 3 20:19:34 2013 +0100
Committer: Guillaume Nodet <[email protected]>
Committed: Tue Dec 3 20:19:34 2013 +0100

----------------------------------------------------------------------
 .../java/org/apache/sshd/common/io/nio2/Nio2Session.java    | 8 ++++++--
 sshd-core/src/test/java/org/apache/sshd/LoadTest.java       | 9 +++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/74946f1b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java 
b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
index f49ef2a..f4dbf32 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
@@ -142,8 +142,12 @@ public class Nio2Session implements IoSession {
             if (currentWrite.compareAndSet(null, future)) {
                 socket.write(future.buffer, null, new 
CompletionHandler<Integer, Object>() {
                     public void completed(Integer result, Object attachment) {
-                        future.setWritten();
-                        finishWrite();
+                        if (future.buffer.hasRemaining()) {
+                            socket.write(future.buffer, null, this);
+                        } else {
+                            future.setWritten();
+                            finishWrite();
+                        }
                     }
                     public void failed(Throwable exc, Object attachment) {
                         future.setException(exc);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/74946f1b/sshd-core/src/test/java/org/apache/sshd/LoadTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/LoadTest.java 
b/sshd-core/src/test/java/org/apache/sshd/LoadTest.java
index 2fd30a7..4385699 100644
--- a/sshd-core/src/test/java/org/apache/sshd/LoadTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/LoadTest.java
@@ -73,6 +73,15 @@ public class LoadTest {
     }
 
     @Test
+    public void testHighLoad() throws Exception {
+        final StringBuilder response = new StringBuilder(1000000);
+        for (int i = 0; i < 100000; i++) {
+            response.append("0123456789");
+        }
+        test(response.toString(), 1, 100);
+    }
+
+    @Test
     public void testBigResponse() throws Exception {
         final StringBuilder response = new StringBuilder(1000000);
         for (int i = 0; i < 100000; i++) {

Reply via email to