You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2020/12/19 00:37:26 UTC

[qpid-broker-j] branch master updated: QPID-8489 - Connection thread looping

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5c27ca0  QPID-8489 - Connection thread looping
5c27ca0 is described below

commit 5c27ca077282d0080f874dd9bf8fd24403e764cb
Author: aw924 <da...@deutsche-boerse.com>
AuthorDate: Thu Dec 17 16:58:59 2020 +0100

    QPID-8489 - Connection thread looping
    
    This closes #73
---
 .../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 f8be138..f6bdabc 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-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org