summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Network.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2016-05-09 23:03:21 +0200
committerJose <jose@zeroc.com>2016-05-09 23:03:21 +0200
commit3e685a12bfd92a4ffd86c808ba0f34df907de5c8 (patch)
tree2ef8fb8e028d4f14d1516a98f2a18dbadb46a5d7 /cpp/src/Ice/Network.cpp
parentUpdate to latest gradle builder (diff)
parentAIX port (diff)
downloadice-3e685a12bfd92a4ffd86c808ba0f34df907de5c8.tar.bz2
ice-3e685a12bfd92a4ffd86c808ba0f34df907de5c8.tar.xz
ice-3e685a12bfd92a4ffd86c808ba0f34df907de5c8.zip
Merge remote-tracking branch 'origin/3.6'
Diffstat (limited to 'cpp/src/Ice/Network.cpp')
-rw-r--r--cpp/src/Ice/Network.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp
index 402471be2ef..d1da40b9b51 100644
--- a/cpp/src/Ice/Network.cpp
+++ b/cpp/src/Ice/Network.cpp
@@ -1286,7 +1286,6 @@ IceInternal::fdToLocalAddress(SOCKET fd, Address& addr)
socklen_t len = static_cast<socklen_t>(sizeof(sockaddr_storage));
if(getsockname(fd, &addr.sa, &len) == SOCKET_ERROR)
{
- closeSocketNoThrow(fd);
SocketException ex(__FILE__, __LINE__);
ex.error = getSocketErrno();
throw ex;
@@ -1320,7 +1319,6 @@ IceInternal::fdToRemoteAddress(SOCKET fd, Address& addr)
}
else
{
- closeSocketNoThrow(fd);
SocketException ex(__FILE__, __LINE__);
ex.error = getSocketErrno();
throw ex;
@@ -2339,12 +2337,20 @@ repeatConnect:
// port as the server).
//
Address localAddr;
- fdToLocalAddress(fd, localAddr);
- if(compareAddress(addr, localAddr) == 0)
+ try
{
- ConnectionRefusedException ex(__FILE__, __LINE__);
- ex.error = 0; // No appropriate errno
- throw ex;
+ fdToLocalAddress(fd, localAddr);
+ if(compareAddress(addr, localAddr) == 0)
+ {
+ ConnectionRefusedException ex(__FILE__, __LINE__);
+ ex.error = 0; // No appropriate errno
+ throw ex;
+ }
+ }
+ catch(const LocalException&)
+ {
+ closeSocketNoThrow(fd);
+ throw;
}
#endif
return true;