diff options
| author | Keith Wall <kwall@apache.org> | 2011-08-26 14:02:42 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2011-08-26 14:02:42 +0000 |
| commit | acad4c42dc8d81ecc6fdef635e14332636e7ba26 (patch) | |
| tree | ca8d13529e487977a557fd6967d98a0951758f12 /qpid/java/common/src | |
| parent | a26c2d668d37b730f44ec53b53182ddb13906e91 (diff) | |
| download | qpid-python-acad4c42dc8d81ecc6fdef635e14332636e7ba26.tar.gz | |
QPID-3453: Fixes an issue with closing of detached session
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1162122 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common/src')
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java | 29 |
1 files changed, 21 insertions, 8 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 e0c6cb29d3..4c996e261c 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 @@ -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(); + } } } |
