You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2010/05/17 23:28:15 UTC
svn commit: r945387 -
/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp
Author: aconway
Date: Mon May 17 21:28:15 2010
New Revision: 945387
URL: http://svn.apache.org/viewvc?rev=945387&view=rev
Log:
Fix retry logic in ConnectionImpl::newSession.
Modified:
qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp?rev=945387&r1=945386&r2=945387&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp Mon May 17 21:28:15 2010
@@ -205,14 +205,15 @@ qpid::messaging::Session ConnectionImpl:
{
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;
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org