You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2010/09/20 23:04:17 UTC
svn commit: r999121 -
/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
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 ){