activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tab...@apache.org
Subject svn commit: r999121 - /activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
Date Mon, 20 Sep 2010 21:04:17 GMT
Author: tabish
Date: Mon Sep 20 21:04:17 2010
New Revision: 999121

URL: http://svn.apache.org/viewvc?rev=999121&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQCPP-316

Fix a case where the connection's config object could be leaked on a shutdown where the failover
transport has its timeout option set and am exception is thrown to the connection when its
RemoveInfo command or ShutdownInfo command is sent.

Also unset the exception listener eariler than it was before since we don't care about async
errors once we enter the disconnect method.

Modified:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp?rev=999121&r1=999120&r2=999121&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
(original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
Mon Sep 20 21:04:17 2010
@@ -181,7 +181,12 @@ ActiveMQConnection::ActiveMQConnection( 
 ////////////////////////////////////////////////////////////////////////////////
 ActiveMQConnection::~ActiveMQConnection() throw() {
     try {
-        this->close();
+
+        try{
+            this->close();
+        } catch(...) {}
+
+        // This must happen even if exceptions occur in the Close attempt.
         delete this->config;
     }
     AMQ_CATCH_NOTHROW( ActiveMQException )
@@ -436,6 +441,9 @@ void ActiveMQConnection::disconnect( lon
 
     try{
 
+        // Clear the listener, we don't care about async errors at this point.
+        this->config->transport->setTransportListener( NULL );
+
         // Remove our ConnectionId from the Broker
         Pointer<RemoveInfo> command( this->config->connectionInfo->createRemoveCommand()
);
         command->setLastDeliveredSequenceId( lastDeliveredSequenceId );
@@ -451,9 +459,6 @@ void ActiveMQConnection::disconnect( lon
 
         if( this->config->transport != NULL ){
 
-            // Clear the listener, we don't care about errors at this point.
-            this->config->transport->setTransportListener( NULL );
-
             try{
                 this->config->transport->close();
             }catch( exceptions::ActiveMQException& ex ){



Mime
View raw message