summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2015-11-19 15:43:10 +0000
committerGordon Sim <gsim@apache.org>2015-11-19 15:43:10 +0000
commit22051c890795ac692180b88d00d481db6f009701 (patch)
treedfc84c260975aef36a27a536153a41a442c855b2
parent11368ef1a01233f253eb9eadbadaa9cb9b8465f3 (diff)
downloadqpid-python-22051c890795ac692180b88d00d481db6f009701.tar.gz
QPID-6870: qpidd does not at present have facility to track deliverability to individual links, so treat undeliverable-here as rejection
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1715199 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp b/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
index f2949c5879..72a5c59667 100644
--- a/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
+++ b/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp
@@ -139,8 +139,15 @@ void OutgoingFromQueue::handle(pn_delivery_t* delivery)
outgoingMessageRejected();//TODO: not quite true...
break;
case PN_MODIFIED:
- if (preAcquires()) queue->release(r.cursor, pn_disposition_is_failed(pn_delivery_remote(delivery)));
- //TODO: handle undeliverable-here and message-annotations
+ if (preAcquires()) {
+ //TODO: handle message-annotations
+ if (pn_disposition_is_undeliverable(pn_delivery_remote(delivery))) {
+ //treat undeliverable here as rejection
+ queue->reject(r.cursor);
+ } else {
+ queue->release(r.cursor, pn_disposition_is_failed(pn_delivery_remote(delivery)));
+ }
+ }
outgoingMessageRejected();//TODO: not quite true...
break;
default: