summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2015-02-04 10:50:03 +0100
committerBenoit Foucher <benoit@zeroc.com>2015-02-04 10:50:03 +0100
commit161e4310b8d7d87d23e5692fc9482126d8bffd11 (patch)
treec395bd5b00e983ce2d6f4468def24fffae42ecbd /java/src
parentFixed (ICE-6203) - Automate service testing (diff)
downloadice-161e4310b8d7d87d23e5692fc9482126d8bffd11.tar.bz2
ice-161e4310b8d7d87d23e5692fc9482126d8bffd11.tar.xz
ice-161e4310b8d7d87d23e5692fc9482126d8bffd11.zip
Fixed ICE-6290: incorrect handling of acceptor exceptions
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java2
-rw-r--r--java/src/Ice/src/main/java/IceInternal/TcpAcceptor.java18
-rw-r--r--java/src/Ice/src/main/java/IceSSL/AcceptorI.java18
3 files changed, 29 insertions, 9 deletions
diff --git a/java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java b/java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java
index 37478d5ee52..6d21cd8d2b7 100644
--- a/java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java
+++ b/java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java
@@ -601,7 +601,7 @@ public final class IncomingConnectionFactory extends EventHandler implements Ice
_adapter.getThreadPool().register(this, SocketOperation.Read);
}
}
- catch(Ice.LocalException ex)
+ catch(Exception ex)
{
if(_acceptor != null)
{
diff --git a/java/src/Ice/src/main/java/IceInternal/TcpAcceptor.java b/java/src/Ice/src/main/java/IceInternal/TcpAcceptor.java
index b6deb8877f3..7b69f8986ba 100644
--- a/java/src/Ice/src/main/java/IceInternal/TcpAcceptor.java
+++ b/java/src/Ice/src/main/java/IceInternal/TcpAcceptor.java
@@ -20,15 +20,25 @@ class TcpAcceptor implements Acceptor
@Override
public void close()
{
- assert(_fd != null);
- Network.closeSocketNoThrow(_fd);
- _fd = null;
+ if(_fd != null)
+ {
+ Network.closeSocketNoThrow(_fd);
+ _fd = null;
+ }
}
@Override
public EndpointI listen()
{
- _addr = Network.doBind(_fd, _addr, _backlog);
+ try
+ {
+ _addr = Network.doBind(_fd, _addr, _backlog);
+ }
+ catch(Ice.Exception ex)
+ {
+ _fd = null;
+ throw ex;
+ }
_endpoint = _endpoint.endpoint(this);
return _endpoint;
}
diff --git a/java/src/Ice/src/main/java/IceSSL/AcceptorI.java b/java/src/Ice/src/main/java/IceSSL/AcceptorI.java
index fedd10fb49a..55be3f583c6 100644
--- a/java/src/Ice/src/main/java/IceSSL/AcceptorI.java
+++ b/java/src/Ice/src/main/java/IceSSL/AcceptorI.java
@@ -20,15 +20,25 @@ final class AcceptorI implements IceInternal.Acceptor
@Override
public void close()
{
- assert(_fd != null);
- IceInternal.Network.closeSocketNoThrow(_fd);
- _fd = null;
+ if(_fd != null)
+ {
+ IceInternal.Network.closeSocketNoThrow(_fd);
+ _fd = null;
+ }
}
@Override
public IceInternal.EndpointI listen()
{
- _addr = IceInternal.Network.doBind(_fd, _addr, _backlog);
+ try
+ {
+ _addr = IceInternal.Network.doBind(_fd, _addr, _backlog);
+ }
+ catch(Ice.Exception ex)
+ {
+ _fd = null;
+ throw ex;
+ }
_endpoint = _endpoint.endpoint(this);
return _endpoint;
}