QPID-8033: [Qpid JMS AMQP 0-x] Notify state waiters on any exception thrown whilst handling incoming frames
diff --git a/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java b/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java
index f8ec8a8..5d59e50 100644
--- a/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java
+++ b/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java
@@ -508,6 +508,7 @@
         {
             _logger.error("Exception processing frame", e);
             propagateExceptionToFrameListeners(e);
+            _stateManager.propagateExceptionToStateWaiters(e);
             exception(e);
         }
         finally
@@ -551,7 +552,7 @@
         catch (QpidException e)
         {
             propagateExceptionToFrameListeners(e);
-
+            _stateManager.propagateExceptionToStateWaiters(e);
             exception(e);
         }
 
diff --git a/client/src/main/java/org/apache/qpid/client/state/AMQStateManager.java b/client/src/main/java/org/apache/qpid/client/state/AMQStateManager.java
index 5bc26a6..3a5fcc4 100644
--- a/client/src/main/java/org/apache/qpid/client/state/AMQStateManager.java
+++ b/client/src/main/java/org/apache/qpid/client/state/AMQStateManager.java
@@ -166,9 +166,14 @@
             _logger.info("No Waiters for error. Saving as last error:" + error.getMessage());
             _lastException = error;
         }
+        propagateExceptionToStateWaiters(error);
+    }
+
+    public void propagateExceptionToStateWaiters(final Exception error)
+    {
         for (StateWaiter waiter : _waiters)
         {
-            if(_logger.isDebugEnabled())
+            if (_logger.isDebugEnabled())
             {
                 _logger.debug("Notifying waiter " + waiter + " for error:" + error.getMessage());
             }