summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/StreamSocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/StreamSocket.cpp')
-rw-r--r--cpp/src/Ice/StreamSocket.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/cpp/src/Ice/StreamSocket.cpp b/cpp/src/Ice/StreamSocket.cpp
index e11d5709aa4..2f5cb94021f 100644
--- a/cpp/src/Ice/StreamSocket.cpp
+++ b/cpp/src/Ice/StreamSocket.cpp
@@ -35,7 +35,15 @@ StreamSocket::StreamSocket(const ProtocolInstancePtr& instance,
_state = StateConnected;
}
#endif
- _desc = fdToString(_fd, _proxy, _addr);
+ try
+ {
+ _desc = fdToString(_fd, _proxy, _addr);
+ }
+ catch(const Ice::Exception&)
+ {
+ closeSocketNoThrow(_fd);
+ throw;
+ }
}
StreamSocket::StreamSocket(const ProtocolInstancePtr& instance, SOCKET fd) :
@@ -48,7 +56,15 @@ StreamSocket::StreamSocket(const ProtocolInstancePtr& instance, SOCKET fd) :
#endif
{
init();
- _desc = fdToString(fd);
+ try
+ {
+ _desc = fdToString(fd);
+ }
+ catch(const Ice::Exception&)
+ {
+ closeSocketNoThrow(fd);
+ throw;
+ }
}
StreamSocket::~StreamSocket()