diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2005-09-06 15:31:01 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2005-09-06 15:31:01 +0000 |
commit | 25bc60fe3e09dd2e3058e9357582f64480563f06 (patch) | |
tree | 4ce0e3a25a3e81a6f1ec2d0f44f0108c4d092ac6 /cpp/src/Ice/Network.cpp | |
parent | Ported adaptive load balancing policy to Windows. (diff) | |
download | ice-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.cpp | 29 |
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 } |