diff options
author | Benoit Foucher <benoit@zeroc.com> | 2011-11-16 13:54:07 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2011-11-16 13:54:07 +0100 |
commit | 812db6aab375454c6d6293f25f01b8370b3d6d3f (patch) | |
tree | c7d96f243a8cd937696e9d7ae03f38166ba4dee9 /cpp/src | |
parent | ICE-4734 - generate constructors for empty exceptions in Java (diff) | |
download | ice-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.cpp | 18 | ||||
-rw-r--r-- | cpp/src/IceSSL/TransceiverI.cpp | 26 |
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; } |