From 4d7e453d2c0da611554ad263186c22c374c090c8 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Fri, 9 Jul 2010 16:06:44 +0000 Subject: QPID-2727: Handle exceptions in Broker constructor and call finalise to safely cleanup plugins git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@962586 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/broker/Broker.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'qpid/cpp') diff --git a/qpid/cpp/src/qpid/broker/Broker.cpp b/qpid/cpp/src/qpid/broker/Broker.cpp index 4c2bd9c5bf..db3767bb59 100644 --- a/qpid/cpp/src/qpid/broker/Broker.cpp +++ b/qpid/cpp/src/qpid/broker/Broker.cpp @@ -165,6 +165,7 @@ Broker::Broker(const Broker::Options& conf) : getKnownBrokers(boost::bind(&Broker::getKnownBrokersImpl, this)), deferDelivery(boost::bind(&Broker::deferDeliveryImpl, this, _1, _2)) { + try { if (conf.enableMgmt) { QPID_LOG(info, "Management enabled"); managementAgent->configure(dataDir.isEnabled() ? dataDir.getPath() : string(), @@ -289,6 +290,10 @@ Broker::Broker(const Broker::Options& conf) : } else if (conf.knownHosts != knownHostsNone) { knownBrokers.push_back(Url(conf.knownHosts)); } + } catch (const std::exception& e) { + finalize(); + throw; + } } void Broker::declareStandardExchange(const std::string& name, const std::string& type) -- cgit v1.2.1