From cb6fdfc91be56bcd2ce53ff4429c4bc8618e94bf Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Sat, 6 Sep 2014 22:05:50 +0000 Subject: 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 --- qpid/python/qpid/peer.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'qpid/python') 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): -- cgit v1.2.1