summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Network.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Network.cpp')
-rw-r--r--cpp/src/Ice/Network.cpp29
1 files changed, 10 insertions, 19 deletions
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp
index bac83bdea14..85ffdae638f 100644
--- a/cpp/src/Ice/Network.cpp
+++ b/cpp/src/Ice/Network.cpp
@@ -912,32 +912,32 @@ IceInternal::createPipe(SOCKET fds[2])
throw;
}
+ setBlock(fds[0], true);
try
{
- setBlock(fds[0], true);
- doConnect(fds[0], addr, -1);
- fds[1] = doAccept(fd, -1);
+ doConnect(fds[0], addr, -1);
}
catch(...)
{
::closesocket(fd);
- ::closesocket(fds[0]);
throw;
}
- ::closesocket(fd);
-
try
{
- setBlock(fds[1], true);
+ fds[1] = doAccept(fd, -1);
}
catch(...)
{
::closesocket(fds[0]);
- ::closesocket(fds[1]);
+ ::closesocket(fd);
throw;
}
+ ::closesocket(fd);
+
+ setBlock(fds[1], true);
+
#else
if(::pipe(fds) != 0)
@@ -947,17 +947,8 @@ IceInternal::createPipe(SOCKET fds[2])
throw ex;
}
- try
- {
- setBlock(fds[0], true);
- setBlock(fds[1], true);
- }
- catch(...)
- {
- close(fds[0]);
- close(fds[1]);
- throw;
- }
+ setBlock(fds[0], true);
+ setBlock(fds[1], true);
#endif
}