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/04/12 13:14:09 UTC
svn commit: r1738766 -
/qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
Author: kwall
Date: Tue Apr 12 11:14:09 2016
New Revision: 1738766
URL: http://svn.apache.org/viewvc?rev=1738766&view=rev
Log:
QPID-7195: [Java Client] Ensure socket is closed if connect times-out or fails
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
Modified: qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java?rev=1738766&r1=1738765&r2=1738766&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java (original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java Tue Apr 12 11:14:09 2016
@@ -30,7 +30,6 @@ import java.util.concurrent.ConcurrentHa
import org.slf4j.LoggerFactory;
import org.apache.qpid.configuration.CommonProperties;
-import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.transport.ConnectionSettings;
import org.apache.qpid.transport.ExceptionHandlingByteBufferReceiver;
import org.apache.qpid.transport.TransportException;
@@ -63,42 +62,11 @@ public class IoNetworkTransport
ExceptionHandlingByteBufferReceiver delegate,
TransportActivity transportActivity)
{
- int sendBufferSize = settings.getWriteBufferSize();
- int receiveBufferSize = settings.getReadBufferSize();
final Socket socket;
if("tcp".equalsIgnoreCase(settings.getProtocol()))
{
- try
- {
- socket = new Socket();
- socket.setReuseAddress(true);
- socket.setTcpNoDelay(settings.isTcpNodelay());
- socket.setSendBufferSize(sendBufferSize);
- socket.setReceiveBufferSize(receiveBufferSize);
-
- if (LOGGER.isDebugEnabled())
- {
- LOGGER.debug("Socket options SO_RCVBUF : {}, SO_SNDBUF : {}, TCP_NODELAY : {}",
- socket.getReceiveBufferSize(),
- socket.getSendBufferSize(),
- socket.getTcpNoDelay());
- }
-
- InetAddress address = InetAddress.getByName(settings.getHost());
-
- InetSocketAddress socketAddress = new InetSocketAddress(address, settings.getPort());
- socket.connect(socketAddress, settings.getConnectTimeout());
-
- LOGGER.debug("Socket connection from {} to {} established",
- socket.getLocalSocketAddress(),
- socket.getRemoteSocketAddress());
-
- }
- catch (IOException e)
- {
- throw new TransportException("Error connecting to broker", e);
- }
+ socket = connectTcp(settings);
}
else if("socket".equalsIgnoreCase(settings.getProtocol()))
{
@@ -113,6 +81,8 @@ public class IoNetworkTransport
throw new TransportException("Unknown transport '"+settings.getProtocol()+"'");
}
+ int sendBufferSize = settings.getWriteBufferSize();
+ int receiveBufferSize = settings.getReadBufferSize();
try
{
IdleTimeoutTicker ticker = new IdleTimeoutTicker(transportActivity, TIMEOUT);
@@ -137,6 +107,49 @@ public class IoNetworkTransport
return _connection;
}
+ private Socket connectTcp(final ConnectionSettings settings)
+ {
+ final Socket socket = new Socket();
+ try
+ {
+ socket.setReuseAddress(true);
+ socket.setTcpNoDelay(settings.isTcpNodelay());
+ socket.setSendBufferSize(socket.getSendBufferSize());
+ socket.setReceiveBufferSize(socket.getReceiveBufferSize());
+
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Socket options SO_RCVBUF : {}, SO_SNDBUF : {}, TCP_NODELAY : {}",
+ socket.getReceiveBufferSize(),
+ socket.getSendBufferSize(),
+ socket.getTcpNoDelay());
+ }
+
+ InetAddress address = InetAddress.getByName(settings.getHost());
+
+ InetSocketAddress socketAddress = new InetSocketAddress(address, settings.getPort());
+ socket.connect(socketAddress, settings.getConnectTimeout());
+
+ LOGGER.debug("Socket connection from {} to {} established",
+ socket.getLocalSocketAddress(),
+ socket.getRemoteSocketAddress());
+
+ }
+ catch (IOException e)
+ {
+ try
+ {
+ socket.close();
+ }
+ catch (IOException ignore)
+ {
+ }
+
+ throw new TransportException("Error connecting to broker", e);
+ }
+ return socket;
+ }
+
public void close()
{
if(_connection != null)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org