diff options
author | Keith Wall <kwall@apache.org> | 2014-09-06 22:05:50 +0000 |
---|---|---|
committer | Keith Wall <kwall@apache.org> | 2014-09-06 22:05:50 +0000 |
commit | cb6fdfc91be56bcd2ce53ff4429c4bc8618e94bf (patch) | |
tree | adef0e13782410f42e3c0c58b2c97af3d20df63c /qpid/python | |
parent | 875e35a15606c41e65b20c62e146cfc2590f1494 (diff) | |
download | qpid-python-cb6fdfc91be56bcd2ce53ff4429c4bc8618e94bf.tar.gz |
QPID-6082: [Python Client] 08..091 Explicitly set incoming queue to guard method interleaving
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1622949 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/python')
-rw-r--r-- | qpid/python/qpid/peer.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/qpid/python/qpid/peer.py b/qpid/python/qpid/peer.py index 40571780f1..851435cd69 100644 --- a/qpid/python/qpid/peer.py +++ b/qpid/python/qpid/peer.py @@ -183,6 +183,7 @@ class Channel: self.incoming = Queue(0) self.responses = Queue(0) self.queue = None + self.content_queue = None self._closed = False self.reason = None @@ -233,6 +234,11 @@ class Channel: def receive(self, frame, work): if isinstance(frame, Method): + if frame.method_type.content: + if frame.method.response: + self.content_queue = self.responses + else: + self.content_queue = self.incoming if frame.method.response: self.queue = self.responses else: @@ -246,6 +252,8 @@ class Channel: if frame.method_type.content: self.queue = self.responses return + elif isinstance(frame, Body) or isinstance(frame, Header): + self.queue = self.content_queue self.queue.put(frame) def queue_response(self, channel, frame): |