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());
     }
 }