diff options
| author | Gordon Sim <gsim@apache.org> | 2014-01-31 12:25:32 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2014-01-31 12:25:32 +0000 |
| commit | 802dbf28e69b64df8a64249d1e659fdd0e4868ff (patch) | |
| tree | 42b70008e1bb04b39e529b18f9b750cc65dc6b71 /cpp/src/qpid | |
| parent | 8090b6360aede941d76b4e9cf7e983feb2ae2504 (diff) | |
| download | qpid-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/src/qpid')
| -rw-r--r-- | cpp/src/qpid/messaging/amqp/SenderContext.cpp | 16 |
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; |
