diff options
Diffstat (limited to 'cpp/src/qpid/amqp_0_10/SessionHandler.cpp')
-rw-r--r-- | cpp/src/qpid/amqp_0_10/SessionHandler.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/cpp/src/qpid/amqp_0_10/SessionHandler.cpp b/cpp/src/qpid/amqp_0_10/SessionHandler.cpp index 5f97d292bc..2448e9ef26 100644 --- a/cpp/src/qpid/amqp_0_10/SessionHandler.cpp +++ b/cpp/src/qpid/amqp_0_10/SessionHandler.cpp @@ -119,6 +119,16 @@ void SessionHandler::handleIn(AMQFrame& f) { } } +void SessionHandler::handleException(const qpid::SessionException& e) +{ + QPID_LOG(error, "Execution exception (during output): " << e.what()); + executionException(e.code, e.what()); // Let subclass handle this first. + framing::AMQP_AllProxy::Execution execution(channel); + execution.exception(e.code, 0, 0, 0, 0, e.what(), FieldTable()); + detaching(); + sendDetach(); +} + namespace { bool isControl(const AMQFrame& f) { return f.getMethod() && f.getMethod()->type() == framing::SEGMENT_TYPE_CONTROL; |