diff options
author | Benoit Foucher <benoit@zeroc.com> | 2015-06-03 18:17:59 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2015-06-03 18:17:59 +0200 |
commit | c4035e1fb3fe8d54d826b3f61aeaac4d91019385 (patch) | |
tree | d3e49482e1284dddcdef82f6168a281df43ffd1a /cpp/src/Ice/ConnectionI.cpp | |
parent | Fixed use of deprecated IceSSL property (diff) | |
download | ice-c4035e1fb3fe8d54d826b3f61aeaac4d91019385.tar.bz2 ice-c4035e1fb3fe8d54d826b3f61aeaac4d91019385.tar.xz ice-c4035e1fb3fe8d54d826b3f61aeaac4d91019385.zip |
Fixed initConnectionInfo to no longer throw
Diffstat (limited to 'cpp/src/Ice/ConnectionI.cpp')
-rw-r--r-- | cpp/src/Ice/ConnectionI.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index 734e9c48695..f524ca3b8d2 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -3511,20 +3511,23 @@ Ice::ConnectionI::unscheduleTimeout(SocketOperation status) Ice::ConnectionInfoPtr Ice::ConnectionI::initConnectionInfo() const { - if(_info) + if(_state > StateNotInitialized && _info) // Update the connection information until it's initialized { return _info; } - ConnectionInfoPtr info = _transceiver->getInfo(); - info->connectionId = _endpoint->connectionId(); - info->incoming = _connector == 0; - info->adapterName = _adapter ? _adapter->getName() : string(); - if(_state > StateNotInitialized) + try + { + _info = _transceiver->getInfo(); + } + catch(const Ice::LocalException&) { - _info = info; // Cache the connection information only if initialized. + _info = new ConnectionInfo(); } - return info; + _info->connectionId = _endpoint->connectionId(); + _info->incoming = _connector == 0; + _info->adapterName = _adapter ? _adapter->getName() : string(); + return _info; } ConnectionState |