summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-10-11 09:20:18 +0000
committerGordon Sim <gsim@apache.org>2007-10-11 09:20:18 +0000
commit040fd21b2b5097146f4df71c714c99c40586097f (patch)
tree519d76e96316183957603be8938af18c2988b6b7 /qpid/cpp
parentffce54c2550253757dbd208d7b1d4602d08140b8 (diff)
downloadqpid-python-040fd21b2b5097146f4df71c714c99c40586097f.tar.gz
Requeue messages for cancelled subscriptions on reciver (rather than redelivering)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@583750 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
-rw-r--r--qpid/cpp/src/qpid/broker/DeliveryRecord.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/broker/DeliveryRecord.cpp b/qpid/cpp/src/qpid/broker/DeliveryRecord.cpp
index eff4cf7a74..850f97cba9 100644
--- a/qpid/cpp/src/qpid/broker/DeliveryRecord.cpp
+++ b/qpid/cpp/src/qpid/broker/DeliveryRecord.cpp
@@ -79,9 +79,13 @@ bool DeliveryRecord::coveredBy(const framing::AccumulatedAck* const range) const
}
void DeliveryRecord::redeliver(SemanticState* const session) {
- if (!confirmed && !cancelled) {
- if(pull){
+ if (!confirmed) {
+ if(pull || cancelled){
//if message was originally sent as response to get, we must requeue it
+
+ //or if subscription was cancelled, requeue it (waiting for
+ //final confirmation for AMQP WG on this case)
+
requeue();
}else{
msg.payload->redeliver();//mark as redelivered