summaryrefslogtreecommitdiff
path: root/qpid/python
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-08-18 16:52:11 +0000
committerGordon Sim <gsim@apache.org>2008-08-18 16:52:11 +0000
commit40df26dd75d7096006bd4cf7a11ecfd8eca327be (patch)
treea39ebfc1fb5efe404a7848775ff011c26f5f047e /qpid/python
parent180da1951d21bab0cd8ae892c7a86838a1e45711 (diff)
downloadqpid-python-40df26dd75d7096006bd4cf7a11ecfd8eca327be.tar.gz
QPID-1250: Ensure broker receives session.detached before channel can be reused.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@686818 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/python')
-rw-r--r--qpid/python/qpid/delegates.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/qpid/python/qpid/delegates.py b/qpid/python/qpid/delegates.py
index 69b93e73dc..bf26553dda 100644
--- a/qpid/python/qpid/delegates.py
+++ b/qpid/python/qpid/delegates.py
@@ -74,8 +74,13 @@ class Delegate:
notify(ch.session.condition)
def session_detach(self, ch, d):
- ssn = self.connection.detach(d.name, ch)
+ #send back the confirmation of detachment before removing the
+ #channel from the attached set; this avoids needing to hold the
+ #connection lock during the sending of this control and ensures
+ #that if the channel is immediately reused for a new session the
+ #attach request will follow the detached notification.
ch.session_detached(d.name)
+ ssn = self.connection.detach(d.name, ch)
def session_detached(self, ch, d):
self.connection.detach(d.name, ch)