Author: aconway
Date: Fri Oct 30 20:33:46 2009
New Revision: 831446

URL: http://svn.apache.org/viewvc?rev=831446&view=rev
Log:
Fix memory leak in testCoincidentErrors due to un-joined connector thread.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp
    qpid/trunk/qpid/cpp/src/tests/BrokerFixture.h
    qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp?rev=831446&r1=831445&r2=831446&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp Fri Oct 30 20:33:46 
2009
@@ -156,8 +156,14 @@
         handler.setRcvTimeoutTask(heartbeatTask);
         theTimer().add(heartbeatTask);
     }
- 
-    handler.waitForOpen();
+
+    try {
+        handler.waitForOpen();
+    } catch (...) {
+        // Make sure the connector thread is joined.
+        connector->close();
+        throw;
+    }
 
     // If the SASL layer has provided an "operational" userId for the 
connection,
     // put it in the negotiated settings.

Modified: qpid/trunk/qpid/cpp/src/tests/BrokerFixture.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/BrokerFixture.h?rev=831446&r1=831445&r2=831446&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/BrokerFixture.h (original)
+++ qpid/trunk/qpid/cpp/src/tests/BrokerFixture.h Fri Oct 30 20:33:46 2009
@@ -94,6 +94,7 @@
 struct LocalConnection : public qpid::client::Connection {
     LocalConnection(uint16_t port) { open("localhost", port); }
     LocalConnection(const qpid::client::ConnectionSettings& s) { open(s); }
+    ~LocalConnection() { close(); }
 };
 
 /** A local client connection via a socket proxy. */

Modified: qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp?rev=831446&r1=831445&r2=831446&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp Fri Oct 30 20:33:46 2009
@@ -98,8 +98,8 @@
         async(c1.session).messageTransfer(content=pMessage("TEST_STORE_DO: 
s1[exception]", "q"));
 
         int alive=0;
-        try { Client c00(cluster[0], "c00"); ++alive; } catch (...) {}
-        try { Client c11(cluster[1], "c11"); ++alive; } catch (...) {}
+        try { Client c00(cluster[0], "c00"); ++alive; c00.close(); } catch 
(...) {}
+        try { Client c11(cluster[1], "c11"); ++alive; c11.close(); } catch 
(...) {}
 
         BOOST_CHECK_EQUAL(alive, 1);
 



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to