@@ -948,28 +948,27 @@ void IncomingToQueue::handle(qpid::broker::Message& message, qpid::broker::TxBuf
948
948
msg << " Queue " << queue->getName () << " has been deleted" ;
949
949
throw Exception (qpid::amqp::error_conditions::RESOURCE_DELETED, msg.str ());
950
950
}
951
+
951
952
try {
952
953
queue->deliver (message, transaction);
953
- } catch (const qpid::SessionException& e) {
954
- throw Exception (qpid::amqp::error_conditions::PRECONDITION_FAILED, e.what ());
955
954
}
955
+ catch (const qpid::Exception& e) {
956
+ QPID_LOG (warning, " Cannot deliver to queue " << queue->getName () << " : " << e.what ());
957
+ throw ;
958
+ }
959
+
956
960
}
957
961
958
962
void IncomingToExchange::handle (qpid::broker::Message& message, qpid::broker::TxBuffer* transaction)
959
963
{
960
- if (exchange->isDestroyed ())
964
+ if (exchange->isDestroyed ()) {
961
965
throw qpid::framing::ResourceDeletedException (QPID_MSG (" Exchange " << exchange->getName () << " has been deleted." ));
962
- try {
963
- authorise.route (exchange, message);
964
- DeliverableMessage deliverable (message, transaction);
965
- exchange->route (deliverable);
966
- if (!deliverable.delivered ) {
967
- if (exchange->getAlternate ()) {
968
- exchange->getAlternate ()->route (deliverable);
969
- }
970
- }
971
- } catch (const qpid::SessionException& e) {
972
- throw Exception (qpid::amqp::error_conditions::PRECONDITION_FAILED, e.what ());
966
+ }
967
+ authorise.route (exchange, message);
968
+ DeliverableMessage deliverable (message, transaction);
969
+ exchange->route (deliverable);
970
+ if (!deliverable.delivered && exchange->getAlternate ()) {
971
+ exchange->getAlternate ()->route (deliverable);
973
972
}
974
973
}
975
974
@@ -993,21 +992,16 @@ void AnonymousRelay::handle(qpid::broker::Message& message, qpid::broker::TxBuff
993
992
}
994
993
}
995
994
996
- try {
997
- if (queue) {
998
- authorise.incoming (queue);
999
- queue->deliver (message, transaction);
1000
- } else if (exchange) {
1001
- authorise.route (exchange, message);
1002
- DeliverableMessage deliverable (message, transaction);
1003
- exchange->route (deliverable);
1004
- } else {
1005
- QPID_LOG (info, " AnonymousRelay dropping message for " << dest);
1006
- }
1007
- } catch (const qpid::SessionException& e) {
1008
- throw Exception (qpid::amqp::error_conditions::PRECONDITION_FAILED, e.what ());
995
+ if (queue) {
996
+ authorise.incoming (queue);
997
+ queue->deliver (message, transaction);
998
+ } else if (exchange) {
999
+ authorise.route (exchange, message);
1000
+ DeliverableMessage deliverable (message, transaction);
1001
+ exchange->route (deliverable);
1002
+ } else {
1003
+ QPID_LOG (info, " AnonymousRelay dropping message for " << dest);
1009
1004
}
1010
-
1011
1005
}
1012
1006
1013
1007
void IncomingToCoordinator::deliver (boost::intrusive_ptr<qpid::broker::amqp::Message> message, pn_delivery_t * delivery)
0 commit comments