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