summaryrefslogtreecommitdiff
path: root/cpp/src/IceSSL/AcceptorI.cpp
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 /cpp/src/IceSSL/AcceptorI.cpp
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 'cpp/src/IceSSL/AcceptorI.cpp')
-rw-r--r--cpp/src/IceSSL/AcceptorI.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/cpp/src/IceSSL/AcceptorI.cpp b/cpp/src/IceSSL/AcceptorI.cpp
index 5c3961ede1b..08a11b42644 100644
--- a/cpp/src/IceSSL/AcceptorI.cpp
+++ b/cpp/src/IceSSL/AcceptorI.cpp
@@ -53,18 +53,19 @@ IceSSL::AcceptorI::getAsyncInfo(IceInternal::SocketOperation)
void
IceSSL::AcceptorI::close()
{
- SOCKET fd = _fd;
- _fd = INVALID_SOCKET;
- IceInternal::closeSocket(fd);
+ if(_fd != INVALID_SOCKET)
+ {
+ IceInternal::closeSocketNoThrow(_fd);
+ _fd = INVALID_SOCKET;
+ }
}
IceInternal::EndpointIPtr
IceSSL::AcceptorI::listen()
{
- const_cast<IceInternal::Address&>(_addr) = IceInternal::doBind(_fd, _addr);
-
try
{
+ const_cast<IceInternal::Address&>(_addr) = IceInternal::doBind(_fd, _addr);
IceInternal::doListen(_fd, _backlog);
}
catch(...)
@@ -72,7 +73,6 @@ IceSSL::AcceptorI::listen()
_fd = INVALID_SOCKET;
throw;
}
-
_endpoint = _endpoint->endpoint(this);
return _endpoint;
}