diff options
author | Marc Laukien <marc@zeroc.com> | 2004-03-09 15:46:00 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2004-03-09 15:46:00 +0000 |
commit | bec4e1cf91ff948b30172be2f7e0aa29cf2f1a6c (patch) | |
tree | e52167ad3a0b6c94b37701299d3da554e3efcb07 /cpp/src/Ice/Network.cpp | |
parent | Intermediate check-in prior to removing IComparable. (diff) | |
download | ice-bec4e1cf91ff948b30172be2f7e0aa29cf2f1a6c.tar.bz2 ice-bec4e1cf91ff948b30172be2f7e0aa29cf2f1a6c.tar.xz ice-bec4e1cf91ff948b30172be2f7e0aa29cf2f1a6c.zip |
fix
Diffstat (limited to 'cpp/src/Ice/Network.cpp')
-rw-r--r-- | cpp/src/Ice/Network.cpp | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index 0ceea888aaa..7f8477884bc 100644 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -774,28 +774,38 @@ IceInternal::createPipe(SOCKET fds[2]) try { fds[0] = createSocket(false); - setBlock(fds[0], true); } catch(...) { - closeSocket(fd); + ::closesocket(fd); throw; } try { + setBlock(fds[0], true); doConnect(fds[0], addr, -1); fds[1] = doAccept(fd, -1); - setBlock(fds[1], true); } catch(...) { - closeSocket(fd); - closeSocket(fds[0]); + ::closesocket(fd); + ::closeSocket(fds[0]); throw; } - closeSocket(fd); + ::closeSocket(fd); + + try + { + setBlock(fds[1], true); + } + catch(...) + { + ::closesocket(fds[0]); + ::closesocket(fds[1]); + throw; + } #else @@ -806,8 +816,17 @@ IceInternal::createPipe(SOCKET fds[2]) throw ex; } - setBlock(fds[0], true); - setBlock(fds[1], true); + try + { + setBlock(fds[0], true); + setBlock(fds[1], true); + } + catch(...) + { + close(fds[0]); + close(fds[1]); + throw; + } #endif } |