summaryrefslogtreecommitdiff
path: root/java/common
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2011-08-26 14:02:42 +0000
committerKeith Wall <kwall@apache.org>2011-08-26 14:02:42 +0000
commitca397f81d182ee9f4c62f688c3b05083cd283443 (patch)
tree36f41936a383c518c33a62146a10defa7383e465 /java/common
parentbc7c58950c0220a470c349351acefa2fe93cb78a (diff)
downloadqpid-python-ca397f81d182ee9f4c62f688c3b05083cd283443.tar.gz
QPID-3453: Fixes an issue with closing of detached session
Applied patch from Oleksandr Rudyy <orudyy@gmail.com> and Andrew MacBean <andymacbean@gmail.com> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1162122 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/common')
-rw-r--r--java/common/src/main/java/org/apache/qpid/transport/Session.java29
1 files changed, 21 insertions, 8 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/transport/Session.java b/java/common/src/main/java/org/apache/qpid/transport/Session.java
index e0c6cb29d3..4c996e261c 100644
--- a/java/common/src/main/java/org/apache/qpid/transport/Session.java
+++ b/java/common/src/main/java/org/apache/qpid/transport/Session.java
@@ -964,16 +964,29 @@ public class Session extends SessionInvoker
public void close()
{
+ if (log.isDebugEnabled())
+ {
+ log.debug("Closing [%s] in state [%s]", this, state);
+ }
synchronized (commands)
{
- state = CLOSING;
- setClose(true);
- sessionRequestTimeout(0);
- sessionDetach(name.getBytes());
-
- awaitClose();
-
-
+ switch(state)
+ {
+ case DETACHED:
+ state = CLOSED;
+ delegate.closed(this);
+ connection.removeSession(this);
+ listener.closed(this);
+ break;
+ case CLOSED:
+ break;
+ default:
+ state = CLOSING;
+ setClose(true);
+ sessionRequestTimeout(0);
+ sessionDetach(name.getBytes());
+ awaitClose();
+ }
}
}