summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Network.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2005-09-06 15:31:01 +0000
committerDwayne Boone <dwayne@zeroc.com>2005-09-06 15:31:01 +0000
commit25bc60fe3e09dd2e3058e9357582f64480563f06 (patch)
tree4ce0e3a25a3e81a6f1ec2d0f44f0108c4d092ac6 /cpp/src/Ice/Network.cpp
parentPorted adaptive load balancing policy to Windows. (diff)
downloadice-25bc60fe3e09dd2e3058e9357582f64480563f06.tar.bz2
ice-25bc60fe3e09dd2e3058e9357582f64480563f06.tar.xz
ice-25bc60fe3e09dd2e3058e9357582f64480563f06.zip
Fixed double close of fd
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
}