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/Ice/TcpAcceptor.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/Ice/TcpAcceptor.cpp')
-rw-r--r-- | cpp/src/Ice/TcpAcceptor.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/cpp/src/Ice/TcpAcceptor.cpp b/cpp/src/Ice/TcpAcceptor.cpp index 723b76ad118..210b3f8351d 100644 --- a/cpp/src/Ice/TcpAcceptor.cpp +++ b/cpp/src/Ice/TcpAcceptor.cpp @@ -49,18 +49,19 @@ IceInternal::TcpAcceptor::getAsyncInfo(SocketOperation) void IceInternal::TcpAcceptor::close() { - SOCKET fd = _fd; - _fd = INVALID_SOCKET; - closeSocket(fd); + if(_fd != INVALID_SOCKET) + { + closeSocketNoThrow(_fd); + _fd = INVALID_SOCKET; + } } EndpointIPtr IceInternal::TcpAcceptor::listen() { - const_cast<Address&>(_addr) = doBind(_fd, _addr); - try { + const_cast<Address&>(_addr) = doBind(_fd, _addr); doListen(_fd, _backlog); } catch(...) @@ -68,7 +69,6 @@ IceInternal::TcpAcceptor::listen() _fd = INVALID_SOCKET; throw; } - _endpoint = _endpoint->endpoint(this); return _endpoint; } |