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

orudyy pushed a commit to branch 8.0.x
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git


The following commit(s) were added to refs/heads/8.0.x by this push:
     new e0f51a7  QPID-8489 - Connection thread looping
e0f51a7 is described below

commit e0f51a73800dd43fe392caa50bf340b9c2a580aa
Author: aw924 <daniil.kiril...@deutsche-boerse.com>
AuthorDate: Thu Dec 17 16:58:59 2020 +0100

    QPID-8489 - Connection thread looping
    
    This closes #73
    
    (cherry picked from commit 5c27ca077282d0080f874dd9bf8fd24403e764cb)
---
 .../org/apache/qpid/server/transport/AbstractAMQPConnection.java | 4 ++--
 .../qpid/server/transport/NonBlockingConnectionTLSDelegate.java  | 9 +++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
 
b/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
index e45e993..9281eca 100644
--- 
a/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
+++ 
b/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
@@ -212,8 +212,8 @@ public abstract class AbstractAMQPConnection<C extends 
AbstractAMQPConnection<C,
     protected void onOpen()
     {
         super.onOpen();
-        long maxAuthDelay = _port.getContextValue(Long.class, 
Port.CONNECTION_MAXIMUM_AUTHENTICATION_DELAY);
-        SlowConnectionOpenTicker slowConnectionOpenTicker = new 
SlowConnectionOpenTicker(maxAuthDelay);
+        final long maxAuthDelay = _port.getContextValue(Long.class, 
Port.CONNECTION_MAXIMUM_AUTHENTICATION_DELAY);
+        final SlowConnectionOpenTicker slowConnectionOpenTicker = new 
SlowConnectionOpenTicker(maxAuthDelay);
         _aggregateTicker.addTicker(slowConnectionOpenTicker);
         _lastReadTime = _lastWriteTime = _lastMessageInboundTime = 
_lastMessageOutboundTime = getCreatedTime().getTime();
         _maxUncommittedInMemorySize = getContextValue(Long.class, 
Connection.MAX_UNCOMMITTED_IN_MEMORY_SIZE);
diff --git 
a/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
 
b/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
index c1eb6de..d14246f 100644
--- 
a/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
+++ 
b/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
@@ -253,6 +253,15 @@ public class NonBlockingConnectionTLSDelegate implements 
NonBlockingConnectionDe
                 }
 
                 _status = QpidByteBuffer.encryptSSL(_sslEngine, buffers, 
_netOutputBuffer);
+                // QPID-8489: workaround for JDK 8 bug to avoid tight looping 
for half closed connections
+                // Additional info: 
https://bugs.openjdk.java.net/browse/JDK-8240071,
+                // 
http://mail.openjdk.java.net/pipermail/security-dev/2019-January/019142.html
+                if(_status.bytesProduced() < 1 && _status.getHandshakeStatus() 
== SSLEngineResult.HandshakeStatus.NEED_WRAP
+                        && !_sslEngine.isOutboundDone() && 
_sslEngine.isInboundDone())
+                {
+                    throw new SSLException(String.format("SSLEngine.wrap 
produced 0 bytes (status %s, handshake status %s)",
+                            _status.getStatus(), 
_status.getHandshakeStatus()));
+                }
                 encrypted = _status.bytesProduced() > 0;
                 totalConsumed += _status.bytesConsumed();
                 runSSLEngineTasks(_status);


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

Reply via email to