From 04f7a874d41a0b77ced712940003a869fb23f373 Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Fri, 14 Jun 2013 20:55:03 +0000 Subject: QPID-4925 : [Java Broker] Timeout connections which do not complete connection handshake git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1493240 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/qpid/configuration/CommonProperties.java | 3 +++ .../org/apache/qpid/transport/network/io/IoNetworkTransport.java | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'qpid/java/common/src/main') diff --git a/qpid/java/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java b/qpid/java/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java index 2449f457e5..6bae93a1b8 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java @@ -33,6 +33,9 @@ public class CommonProperties public static final String IO_NETWORK_TRANSPORT_TIMEOUT_PROP_NAME = "qpid.io_network_transport_timeout"; public static final int IO_NETWORK_TRANSPORT_TIMEOUT_DEFAULT = 60000; + public static final String HANDSHAKE_TIMEOUT_PROP_NAME = "qpid.handshake_timeout"; + public static final int HANDSHAKE_TIMEOUT_DEFAULT = 2; + private CommonProperties() { diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java index 5742667dbe..18a8bf2779 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java @@ -50,6 +50,9 @@ public class IoNetworkTransport implements OutgoingNetworkTransport, IncomingNet private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(IoNetworkTransport.class); private static final int TIMEOUT = Integer.getInteger(CommonProperties.IO_NETWORK_TRANSPORT_TIMEOUT_PROP_NAME, CommonProperties.IO_NETWORK_TRANSPORT_TIMEOUT_DEFAULT); + private static final int HANSHAKE_TIMEOUT = Integer.getInteger(CommonProperties.HANDSHAKE_TIMEOUT_PROP_NAME , + CommonProperties.HANDSHAKE_TIMEOUT_DEFAULT); + private Socket _socket; private IoNetworkConnection _connection; @@ -224,7 +227,7 @@ public class IoNetworkTransport implements OutgoingNetworkTransport, IncomingNet { socket = _serverSocket.accept(); socket.setTcpNoDelay(_config.getTcpNoDelay()); - socket.setSoTimeout(_timeout); + socket.setSoTimeout(1000 * HANSHAKE_TIMEOUT); final Integer sendBufferSize = _config.getSendBufferSize(); final Integer receiveBufferSize = _config.getReceiveBufferSize(); @@ -237,6 +240,9 @@ public class IoNetworkTransport implements OutgoingNetworkTransport, IncomingNet final IdleTimeoutTicker ticker = new IdleTimeoutTicker(engine, TIMEOUT); NetworkConnection connection = new IoNetworkConnection(socket, engine, sendBufferSize, receiveBufferSize, _timeout, ticker); + + connection.setMaxReadIdle(HANSHAKE_TIMEOUT); + ticker.setConnection(connection); if(_sslContext != null && socket instanceof SSLSocket) -- cgit v1.2.1