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 | 60057de2529d0aab0f5492be5a60f8ae87258e3f (patch) | |
| tree | 56dbf19c0001ebfb5be92a52bc22604c71b2cafd /qpid/cpp/src | |
| parent | 561105d8014ff4c9e6ad13a713c6ecf91d80a09b (diff) | |
| download | qpid-python-60057de2529d0aab0f5492be5a60f8ae87258e3f.tar.gz | |
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
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
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; |
