summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/TcpAcceptor.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/Ice/TcpAcceptor.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/Ice/TcpAcceptor.cpp')
-rw-r--r--cpp/src/Ice/TcpAcceptor.cpp12
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;
}