summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ConnectionI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2015-06-03 18:17:59 +0200
committerBenoit Foucher <benoit@zeroc.com>2015-06-03 18:17:59 +0200
commitc4035e1fb3fe8d54d826b3f61aeaac4d91019385 (patch)
treed3e49482e1284dddcdef82f6168a281df43ffd1a /cpp/src/Ice/ConnectionI.cpp
parentFixed use of deprecated IceSSL property (diff)
downloadice-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.cpp19
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