summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2008-01-07 10:30:13 +0100
committerBenoit Foucher <benoit@zeroc.com>2008-01-07 10:30:13 +0100
commitd9ce265d9766f0d48c6a6c10491be1f782424a2c (patch)
tree62df7123b09ccbcc617c6024c4b30e1bec45f16b /java/src
parentFixed IceBox/configuration test failure when run with --protocol=ssl (diff)
downloadice-d9ce265d9766f0d48c6a6c10491be1f782424a2c.tar.bz2
ice-d9ce265d9766f0d48c6a6c10491be1f782424a2c.tar.xz
ice-d9ce265d9766f0d48c6a6c10491be1f782424a2c.zip
Fixed bug 2304
Diffstat (limited to 'java/src')
-rw-r--r--java/src/IceInternal/TcpConnector.java28
-rw-r--r--java/src/IceInternal/TcpTransceiver.java19
-rw-r--r--java/src/IceSSL/ConnectorI.java29
-rw-r--r--java/src/IceSSL/TransceiverI.java56
4 files changed, 90 insertions, 42 deletions
diff --git a/java/src/IceInternal/TcpConnector.java b/java/src/IceInternal/TcpConnector.java
index ab2a2a877e3..e42057940bb 100644
--- a/java/src/IceInternal/TcpConnector.java
+++ b/java/src/IceInternal/TcpConnector.java
@@ -20,19 +20,31 @@ final class TcpConnector implements Connector, java.lang.Comparable
_logger.trace(_traceLevels.networkCat, s);
}
- java.nio.channels.SocketChannel fd = Network.createTcpSocket();
- Network.setBlock(fd, false);
- Network.setTcpBufSize(fd, _instance.initializationData().properties, _logger);
- boolean connected = Network.doConnect(fd, _addr, timeout);
- if(connected)
+ try
+ {
+ java.nio.channels.SocketChannel fd = Network.createTcpSocket();
+ Network.setBlock(fd, false);
+ Network.setTcpBufSize(fd, _instance.initializationData().properties, _logger);
+ boolean connected = Network.doConnect(fd, _addr, timeout);
+ if(connected)
+ {
+ if(_traceLevels.network >= 1)
+ {
+ String s = "tcp connection established\n" + Network.fdToString(fd);
+ _logger.trace(_traceLevels.networkCat, s);
+ }
+ }
+ return new TcpTransceiver(_instance, fd, connected);
+ }
+ catch(Ice.LocalException ex)
{
- if(_traceLevels.network >= 1)
+ if(_traceLevels.network >= 2)
{
- String s = "tcp connection established\n" + Network.fdToString(fd);
+ String s = "failed to establish tcp connection to " + toString() + "\n" + ex;
_logger.trace(_traceLevels.networkCat, s);
}
+ throw ex;
}
- return new TcpTransceiver(_instance, fd, connected);
}
public short
diff --git a/java/src/IceInternal/TcpTransceiver.java b/java/src/IceInternal/TcpTransceiver.java
index bfa7c3ced27..82e46ec2552 100644
--- a/java/src/IceInternal/TcpTransceiver.java
+++ b/java/src/IceInternal/TcpTransceiver.java
@@ -28,9 +28,22 @@ final class TcpTransceiver implements Transceiver
}
else if(_state <= StateConnectPending)
{
- Network.doFinishConnect(_fd, timeout);
- _state = StateConnected;
- _desc = Network.fdToString(_fd);
+ try
+ {
+ Network.doFinishConnect(_fd, timeout);
+ _state = StateConnected;
+ _desc = Network.fdToString(_fd);
+ }
+ catch(Ice.LocalException ex)
+ {
+ if(_traceLevels.network >= 2)
+ {
+ String s = "failed to establish tcp connection\n" + _desc + "\n" + ex;
+ _logger.trace(_traceLevels.networkCat, s);
+ }
+ throw ex;
+ }
+
if(_traceLevels.network >= 1)
{
String s = "tcp connection established\n" + _desc;
diff --git a/java/src/IceSSL/ConnectorI.java b/java/src/IceSSL/ConnectorI.java
index e2d25283302..97ed91e9939 100644
--- a/java/src/IceSSL/ConnectorI.java
+++ b/java/src/IceSSL/ConnectorI.java
@@ -30,19 +30,30 @@ final class ConnectorI implements IceInternal.Connector, java.lang.Comparable
_logger.trace(_instance.networkTraceCategory(), s);
}
- java.nio.channels.SocketChannel fd = IceInternal.Network.createTcpSocket();
- IceInternal.Network.setBlock(fd, false);
- IceInternal.Network.setTcpBufSize(fd, _instance.communicator().getProperties(), _logger);
- boolean connected = IceInternal.Network.doConnect(fd, _addr, timeout);
-
try
{
- javax.net.ssl.SSLEngine engine = _instance.createSSLEngine(false);
- return new TransceiverI(_instance, engine, fd, _host, connected, false, "");
+ java.nio.channels.SocketChannel fd = IceInternal.Network.createTcpSocket();
+ IceInternal.Network.setBlock(fd, false);
+ IceInternal.Network.setTcpBufSize(fd, _instance.communicator().getProperties(), _logger);
+ boolean connected = IceInternal.Network.doConnect(fd, _addr, timeout);
+ try
+ {
+ javax.net.ssl.SSLEngine engine = _instance.createSSLEngine(false);
+ return new TransceiverI(_instance, engine, fd, _host, connected, false, "");
+ }
+ catch(RuntimeException ex)
+ {
+ IceInternal.Network.closeSocketNoThrow(fd);
+ throw ex;
+ }
}
- catch(RuntimeException ex)
+ catch(Ice.LocalException ex)
{
- IceInternal.Network.closeSocketNoThrow(fd);
+ if(_instance.networkTraceLevel() >= 2)
+ {
+ String s = "failed to establish ssl connection to " + toString() + "\n" + ex;
+ _logger.trace(_instance.networkTraceCategory(), s);
+ }
throw ex;
}
}
diff --git a/java/src/IceSSL/TransceiverI.java b/java/src/IceSSL/TransceiverI.java
index 97ce62c558c..0d56e6f5a83 100644
--- a/java/src/IceSSL/TransceiverI.java
+++ b/java/src/IceSSL/TransceiverI.java
@@ -28,36 +28,48 @@ final class TransceiverI implements IceInternal.Transceiver
public synchronized IceInternal.SocketStatus
initialize(int timeout)
{
- if(_state == StateNeedConnect && timeout == 0)
- {
- _state = StateConnectPending;
- return IceInternal.SocketStatus.NeedConnect;
- }
- else if(_state <= StateConnectPending)
- {
- IceInternal.Network.doFinishConnect(_fd, timeout);
- _state = StateConnected;
- _desc = IceInternal.Network.fdToString(_fd);
- }
- assert(_state == StateConnected);
-
- IceInternal.SocketStatus status;
- do
+ try
{
- status = handshakeNonBlocking();
- if(timeout == 0)
+ if(_state == StateNeedConnect && timeout == 0)
+ {
+ _state = StateConnectPending;
+ return IceInternal.SocketStatus.NeedConnect;
+ }
+ else if(_state <= StateConnectPending)
{
- return status;
+ IceInternal.Network.doFinishConnect(_fd, timeout);
+ _state = StateConnected;
+ _desc = IceInternal.Network.fdToString(_fd);
}
+ assert(_state == StateConnected);
- if(status != IceInternal.SocketStatus.Finished)
+ IceInternal.SocketStatus status;
+ do
{
- handleSocketStatus(status, timeout);
+ status = handshakeNonBlocking();
+ if(timeout == 0)
+ {
+ return status;
+ }
+
+ if(status != IceInternal.SocketStatus.Finished)
+ {
+ handleSocketStatus(status, timeout);
+ }
}
+ while(status != IceInternal.SocketStatus.Finished);
+ }
+ catch(Ice.LocalException ex)
+ {
+ if(_instance.networkTraceLevel() >= 2)
+ {
+ String s = "failed to establish ssl connection\n" + _desc + "\n" + ex;
+ _logger.trace(_instance.networkTraceCategory(), s);
+ }
+ throw ex;
}
- while(status != IceInternal.SocketStatus.Finished);
- return status;
+ return IceInternal.SocketStatus.Finished;
}
//