summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Message.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2009-02-12 20:01:32 +0000
committerGordon Sim <gsim@apache.org>2009-02-12 20:01:32 +0000
commit2373179461b356f540dacd27d0fd7413b0a550e2 (patch)
tree59e8bfc0fa4c94fe5c9b2419f41ef5f85e1dd0a1 /cpp/src/qpid/broker/Message.cpp
parentaa5e03ba82f2c42e2e89466468e03209bd31cee3 (diff)
downloadqpid-python-2373179461b356f540dacd27d0fd7413b0a550e2.tar.gz
Queue::checkLvqReplace() needs to update the lvq map if it makes a replacement or the map will contain a pointer to a stale message and further updates will be lost.
Also added in locking to set-/get- ReplacementMessage() in Message.cpp git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@743857 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Message.cpp')
-rw-r--r--cpp/src/qpid/broker/Message.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/Message.cpp b/cpp/src/qpid/broker/Message.cpp
index ce0477b08c..133e2b5ad1 100644
--- a/cpp/src/qpid/broker/Message.cpp
+++ b/cpp/src/qpid/broker/Message.cpp
@@ -344,6 +344,7 @@ bool Message::hasExpired()
boost::intrusive_ptr<Message>& Message::getReplacementMessage(const Queue* qfor) const
{
+ sys::Mutex::ScopedLock l(lock);
Replacement::iterator i = replacement.find(qfor);
if (i != replacement.end()){
return i->second;
@@ -353,6 +354,7 @@ boost::intrusive_ptr<Message>& Message::getReplacementMessage(const Queue* qfor)
void Message::setReplacementMessage(boost::intrusive_ptr<Message> msg, const Queue* qfor)
{
+ sys::Mutex::ScopedLock l(lock);
replacement[qfor] = msg;
}