summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2014-01-31 12:25:32 +0000
committerGordon Sim <gsim@apache.org>2014-01-31 12:25:32 +0000
commit802dbf28e69b64df8a64249d1e659fdd0e4868ff (patch)
tree42b70008e1bb04b39e529b18f9b750cc65dc6b71 /cpp
parent8090b6360aede941d76b4e9cf7e983feb2ae2504 (diff)
downloadqpid-python-802dbf28e69b64df8a64249d1e659fdd0e4868ff.tar.gz
QPID-5529: remove failed send from delivery buffer
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1563122 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/qpid/messaging/amqp/SenderContext.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/cpp/src/qpid/messaging/amqp/SenderContext.cpp b/cpp/src/qpid/messaging/amqp/SenderContext.cpp
index 0bf8bef27f..59e1832cfd 100644
--- a/cpp/src/qpid/messaging/amqp/SenderContext.cpp
+++ b/cpp/src/qpid/messaging/amqp/SenderContext.cpp
@@ -95,11 +95,17 @@ bool SenderContext::send(const qpid::messaging::Message& message, SenderContext:
return true;
} else {
deliveries.push_back(Delivery(nextId++));
- Delivery& delivery = deliveries.back();
- delivery.encode(MessageImplAccess::get(message), address, setToOnSend);
- delivery.send(sender, unreliable);
- *out = &delivery;
- return true;
+ try {
+ Delivery& delivery = deliveries.back();
+ delivery.encode(MessageImplAccess::get(message), address, setToOnSend);
+ delivery.send(sender, unreliable);
+ *out = &delivery;
+ return true;
+ } catch (const std::exception& e) {
+ deliveries.pop_back();
+ --nextId;
+ throw SendError(e.what());
+ }
}
} else {
return false;