summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Network.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2004-03-09 15:46:00 +0000
committerMarc Laukien <marc@zeroc.com>2004-03-09 15:46:00 +0000
commitbec4e1cf91ff948b30172be2f7e0aa29cf2f1a6c (patch)
treee52167ad3a0b6c94b37701299d3da554e3efcb07 /cpp/src/Ice/Network.cpp
parentIntermediate check-in prior to removing IComparable. (diff)
downloadice-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.cpp35
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
}