diff options
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
-rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index bcce83af1e..3ae53c8ea9 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -563,8 +563,10 @@ void Queue::push(boost::intrusive_ptr<Message>& msg){ listeners.populate(copy); lvq[key] = msg; }else { + boost::intrusive_ptr<Message> old = i->second->getReplacementMessage(this); + if (!old) old = i->second; i->second->setReplacementMessage(msg,this); - dequeued(QueuedMessage(qm.queue, i->second, qm.position)); + dequeued(QueuedMessage(qm.queue, old, qm.position)); } }else { messages.push_back(qm); |