You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2016/01/12 13:40:54 UTC

svn commit: r1724216 - /qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java

Author: kwall
Date: Tue Jan 12 12:40:54 2016
New Revision: 1724216

URL: http://svn.apache.org/viewvc?rev=1724216&view=rev
Log:
QPID-6975: Prevent an open connection spinning on the selector after an SSL close_notify

Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java?rev=1724216&r1=1724215&r2=1724216&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java Tue Jan 12 12:40:54 2016
@@ -77,7 +77,7 @@ public class NonBlockingConnectionTLSDel
     @Override
     public boolean readyForRead()
     {
-        return _sslEngine.getHandshakeStatus() != SSLEngineResult.HandshakeStatus.NEED_WRAP && (_status == null || _status.getStatus() != SSLEngineResult.Status.CLOSED);
+        return _sslEngine.getHandshakeStatus() != SSLEngineResult.HandshakeStatus.NEED_WRAP;
     }
 
     @Override
@@ -95,8 +95,10 @@ public class NonBlockingConnectionTLSDel
             _status = _netInputBuffer.decryptSSL(_sslEngine, _applicationBuffer);
             if (_status.getStatus() == SSLEngineResult.Status.CLOSED)
             {
-                // KW If SSLEngine changes state to CLOSED, what will ever set _closed to true?
-                LOGGER.debug("SSLEngine closed");
+                int remaining = _netInputBuffer.remaining();
+                _netInputBuffer.position(_netInputBuffer.limit());
+                // We'd usually expect no more bytes to be sent following a close_notify
+                LOGGER.debug("SSLEngine closed, discarded {} byte(s)", remaining);
             }
 
             tasksRun = runSSLEngineTasks(_status);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org