diff options
Diffstat (limited to 'qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java')
-rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java index f94edcc655..4079097f96 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java @@ -384,7 +384,15 @@ public class Session extends SessionInvoker { copy = processed.copy(); } - sessionCompleted(copy, options); + + synchronized (commands) + { + if (state == DETACHED) + { + return; + } + sessionCompleted(copy, options); + } } void knownComplete(RangeSet kc) @@ -484,6 +492,11 @@ public class Session extends SessionInvoker synchronized (commands) { + if (state == DETACHED && m.isUnreliable()) + { + return; + } + if (state != OPEN && state != CLOSED) { Waiter w = new Waiter(commands, timeout); |