diff options
author | Benoit Foucher <benoit@zeroc.com> | 2015-02-04 10:50:03 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2015-02-04 10:50:03 +0100 |
commit | 161e4310b8d7d87d23e5692fc9482126d8bffd11 (patch) | |
tree | c395bd5b00e983ce2d6f4468def24fffae42ecbd /cpp/src/IceSSL/AcceptorI.cpp | |
parent | Fixed (ICE-6203) - Automate service testing (diff) | |
download | ice-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.cpp | 12 |
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; } |