diff options
author | Alan Conway <aconway@apache.org> | 2010-05-17 21:28:15 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2010-05-17 21:28:15 +0000 |
commit | 499a1cdc238e7ed738dc26aca74b1e47d218d451 (patch) | |
tree | 7630f1a67b385e65e9e9f48b6009323828c44984 /cpp/src | |
parent | f3a87cca79dc00d76dc76b5143556b4446c297c0 (diff) | |
download | qpid-python-499a1cdc238e7ed738dc26aca74b1e47d218d451.tar.gz |
Fix retry logic in ConnectionImpl::newSession.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@945387 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp index 777a952bae..58f4f2acfb 100644 --- a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp +++ b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp @@ -205,14 +205,15 @@ qpid::messaging::Session ConnectionImpl::newSession(bool transactional, const st { std::string name = n.empty() ? Uuid(true).str() : n; qpid::messaging::Session impl(new SessionImpl(*this, transactional)); - { - qpid::sys::Mutex::ScopedLock l(lock); - sessions[name] = impl; - } - try { - getImplPtr(impl)->setSession(connection.newSession(name)); - } catch (const qpid::TransportFailure&) { - open(); + while (true) { + try { + getImplPtr(impl)->setSession(connection.newSession(name)); + qpid::sys::Mutex::ScopedLock l(lock); + sessions[name] = impl; + break; + } catch (const qpid::TransportFailure&) { + open(); + } } return impl; } |