summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Broker.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2010-07-05 20:12:08 +0000
committerAlan Conway <aconway@apache.org>2010-07-05 20:12:08 +0000
commit74f973f9b8aaa0aedc9e7c3b2505357aae8e614a (patch)
tree8ad8de6773a48aab5121ac4152fb8624758b5087 /cpp/src/qpid/broker/Broker.cpp
parent3c57e4b18865b717404ea41efbd4b80516a92a33 (diff)
downloadqpid-python-74f973f9b8aaa0aedc9e7c3b2505357aae8e614a.tar.gz
Defer delivery of messages in cluster-unsafe context.
Messages enqueued in a cluster-safe context are synchronized across the cluster. However some messages are delivered in a cluster-unsafe context, for example raising a link established event occurs the connection thread of the establishing connection. This fix deferrs such messages by multicasting them so they can be re-delived in a cluster safe context. See https://bugzilla.redhat.com/show_bug.cgi?id=611543 git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@960681 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Broker.cpp')
-rw-r--r--cpp/src/qpid/broker/Broker.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp
index 5b1b5235ec..4c2bd9c5bf 100644
--- a/cpp/src/qpid/broker/Broker.cpp
+++ b/cpp/src/qpid/broker/Broker.cpp
@@ -162,7 +162,8 @@ Broker::Broker(const Broker::Options& conf) :
clusterUpdatee(false),
expiryPolicy(new ExpiryPolicy),
connectionCounter(conf.maxConnections),
- getKnownBrokers(boost::bind(&Broker::getKnownBrokersImpl, this))
+ getKnownBrokers(boost::bind(&Broker::getKnownBrokersImpl, this)),
+ deferDelivery(boost::bind(&Broker::deferDeliveryImpl, this, _1, _2))
{
if (conf.enableMgmt) {
QPID_LOG(info, "Management enabled");
@@ -492,6 +493,10 @@ Broker::getKnownBrokersImpl()
return knownBrokers;
}
+bool Broker::deferDeliveryImpl(const std::string& ,
+ const boost::intrusive_ptr<Message>& )
+{ return false; }
+
void Broker::setClusterTimer(std::auto_ptr<sys::Timer> t) {
clusterTimer = t;
}