summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2011-11-16 13:54:07 +0100
committerBenoit Foucher <benoit@zeroc.com>2011-11-16 13:54:07 +0100
commit812db6aab375454c6d6293f25f01b8370b3d6d3f (patch)
treec7d96f243a8cd937696e9d7ae03f38166ba4dee9 /cpp/src
parentICE-4734 - generate constructors for empty exceptions in Java (diff)
downloadice-812db6aab375454c6d6293f25f01b8370b3d6d3f.tar.bz2
ice-812db6aab375454c6d6293f25f01b8370b3d6d3f.tar.xz
ice-812db6aab375454c6d6293f25f01b8370b3d6d3f.zip
Fixed ICE-4735 - Windows 8 assert on connection establishment
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/TcpTransceiver.cpp18
-rw-r--r--cpp/src/IceSSL/TransceiverI.cpp26
2 files changed, 24 insertions, 20 deletions
diff --git a/cpp/src/Ice/TcpTransceiver.cpp b/cpp/src/Ice/TcpTransceiver.cpp
index bbaba2b4df8..72b235dd2e2 100644
--- a/cpp/src/Ice/TcpTransceiver.cpp
+++ b/cpp/src/Ice/TcpTransceiver.cpp
@@ -68,14 +68,19 @@ IceInternal::TcpTransceiver::initialize()
{
if(_traceLevels->network >= 2)
{
+ Trace out(_logger, _traceLevels->networkCat);
+ out << "failed to establish tcp connection\n";
+#ifndef _WIN32
+ //
+ // The local address is only accessible with connected sockets on Windows.
+ //
struct sockaddr_storage localAddr;
fdToLocalAddress(_fd, localAddr);
-
- Trace out(_logger, _traceLevels->networkCat);
- out << "failed to establish tcp connection\n"
- << "local address: " << addrToString(localAddr) << "\n"
- << "remote address: " << addrToString(_connectAddr) << "\n"
- << ex;
+ out << "local address: " << addrToString(localAddr) << "\n";
+#else
+ out << "local address: <not available>\n";
+#endif
+ out << "remote address: " << addrToString(_connectAddr) << "\n" << ex;
}
throw;
}
@@ -289,7 +294,6 @@ IceInternal::TcpTransceiver::startWrite(Buffer& buf)
if(_state < StateConnected)
{
doConnectAsync(_fd, _connectAddr, _write);
- _desc = fdToString(_fd);
return false;
}
diff --git a/cpp/src/IceSSL/TransceiverI.cpp b/cpp/src/IceSSL/TransceiverI.cpp
index a30ce0f0264..2674d714d87 100644
--- a/cpp/src/IceSSL/TransceiverI.cpp
+++ b/cpp/src/IceSSL/TransceiverI.cpp
@@ -247,24 +247,25 @@ IceSSL::TransceiverI::initialize()
if(_instance->networkTraceLevel() >= 2)
{
Trace out(_logger, _instance->networkTraceCategory());
-
- struct sockaddr_storage localAddr;
- IceInternal::fdToLocalAddress(_fd, localAddr);
-
- struct sockaddr_storage remoteAddr;
+ out << "failed to establish ssl connection\n";
if(_incoming)
{
- IceInternal::fdToRemoteAddress(_fd, remoteAddr);
+ out << IceInternal::fdToString(_fd) << "\n" << ex;
}
else
{
- remoteAddr = _connectAddr;
+#ifndef _WIN32
+ //
+ // The local address is only accessible with connected sockets on Windows.
+ //
+ struct sockaddr_storage localAddr;
+ IceInternal::fdToLocalAddress(_fd, localAddr);
+ out << "local address: " << IceInternal::addrToString(localAddr) << "\n";
+#else
+ out << "local address: <not available>\n";
+#endif
+ out << "remote address: " << IceInternal::addrToString(_connectAddr) << "\n" << ex;
}
-
- out << "failed to establish ssl connection\n"
- << "local address: " << IceInternal::addrToString(localAddr) << "\n"
- << "remote address: " << IceInternal::addrToString(remoteAddr) << "\n"
- << ex;
}
throw;
}
@@ -648,7 +649,6 @@ IceSSL::TransceiverI::startWrite(IceInternal::Buffer& buf)
if(_state < StateConnected)
{
IceInternal::doConnectAsync(_fd, _connectAddr, _write);
- _desc = IceInternal::fdToString(_fd);
return false;
}