You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2012/04/30 16:56:10 UTC

svn commit: r1332230 - /activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/nio/NIOSSLTransport.java

Author: dejanb
Date: Mon Apr 30 14:56:09 2012
New Revision: 1332230

URL: http://svn.apache.org/viewvc?rev=1332230&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3819 - handle BUFFER_UNDERFLOW case

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/nio/NIOSSLTransport.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/nio/NIOSSLTransport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/nio/NIOSSLTransport.java?rev=1332230&r1=1332229&r2=1332230&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/nio/NIOSSLTransport.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/nio/NIOSSLTransport.java Mon Apr 30 14:56:09 2012
@@ -135,7 +135,11 @@ public class NIOSSLTransport extends NIO
             while(true) {
                 if (!plain.hasRemaining()) {
 
-                    plain.clear();
+                    if (status == SSLEngineResult.Status.OK && handshakeStatus != SSLEngineResult.HandshakeStatus.NEED_UNWRAP) {
+                        plain.clear();
+                    } else {
+                        plain.compact();
+                    }
                     int readCount = secureRead(plain);
 
 
@@ -150,7 +154,9 @@ public class NIOSSLTransport extends NIO
                     }
                 }
 
-                processCommand(plain);
+                if (status == SSLEngineResult.Status.OK && handshakeStatus != SSLEngineResult.HandshakeStatus.NEED_UNWRAP) {
+                    processCommand(plain);
+                }
 
             }
         } catch (IOException e) {
@@ -192,7 +198,7 @@ public class NIOSSLTransport extends NIO
 
     protected int secureRead(ByteBuffer plain) throws Exception {
 
-        if (!(inputBuffer.position() != 0 && inputBuffer.hasRemaining())) {
+        if (!(inputBuffer.position() != 0 && inputBuffer.hasRemaining()) || status == SSLEngineResult.Status.BUFFER_UNDERFLOW) {
             int bytesRead = channel.read(inputBuffer);
 
             if (bytesRead == -1) {