@Override protected void doConnect(SocketAddress remoteAddress, SocketAddress localAddress) throws Exception { if (localAddress != null) { socket.bind(localAddress); } boolean success = false; try { socket.connect(remoteAddress); success = true; } finally { if (!success) { try { socket.close(); } catch (Throwable t) { logger.warn("Failed to close a socket.", t); } } } }