From 60057de2529d0aab0f5492be5a60f8ae87258e3f Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Fri, 31 Jan 2014 12:25:32 +0000 Subject: QPID-5529: remove failed send from delivery buffer git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1563122 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'qpid/cpp') diff --git a/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp b/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp index 0bf8bef27f..59e1832cfd 100644 --- a/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp +++ b/qpid/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; -- cgit v1.2.1