QPID-7859: fix exception handling
diff --git a/src/qpid/broker/amqp/Connection.cpp b/src/qpid/broker/amqp/Connection.cpp
index 9a25e35..2d3566a 100644
--- a/src/qpid/broker/amqp/Connection.cpp
+++ b/src/qpid/broker/amqp/Connection.cpp
@@ -446,6 +446,7 @@
doSessionRemoteClose(pn_event_session(event));
break;
case PN_LINK_REMOTE_OPEN:
+ QPID_LOG(notice, "Got link open event");
doLinkRemoteOpen(pn_event_link(event));
break;
case PN_LINK_REMOTE_DETACH:
diff --git a/src/qpid/broker/amqp/Session.cpp b/src/qpid/broker/amqp/Session.cpp
index 5573498..e512073 100644
--- a/src/qpid/broker/amqp/Session.cpp
+++ b/src/qpid/broker/amqp/Session.cpp
@@ -955,13 +955,17 @@
{
if (exchange->isDestroyed())
throw qpid::framing::ResourceDeletedException(QPID_MSG("Exchange " << exchange->getName() << " has been deleted."));
- authorise.route(exchange, message);
- DeliverableMessage deliverable(message, transaction);
- exchange->route(deliverable);
- if (!deliverable.delivered) {
- if (exchange->getAlternate()) {
- exchange->getAlternate()->route(deliverable);
+ try {
+ authorise.route(exchange, message);
+ DeliverableMessage deliverable(message, transaction);
+ exchange->route(deliverable);
+ if (!deliverable.delivered) {
+ if (exchange->getAlternate()) {
+ exchange->getAlternate()->route(deliverable);
+ }
}
+ } catch (const qpid::SessionException& e) {
+ throw Exception(qpid::amqp::error_conditions::PRECONDITION_FAILED, e.what());
}
}