summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Anthony Giusti <kgiusti@apache.org>2010-08-11 14:46:39 +0000
committerKenneth Anthony Giusti <kgiusti@apache.org>2010-08-11 14:46:39 +0000
commitd037858836fa43120b26a5351950b40dfedffcaa (patch)
treeffdf6890a9a8f649ae49c3d11c99c1ce4bc1df8b
parent1cc16b7d51a771b3be549fad8951c34c63c56c81 (diff)
downloadqpid-python-d037858836fa43120b26a5351950b40dfedffcaa.tar.gz
Correctly parse replies containing multiple qmf messages.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@984424 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--python/qpid/management.py31
1 files changed, 16 insertions, 15 deletions
diff --git a/python/qpid/management.py b/python/qpid/management.py
index a23932aebb..3de8da9d49 100644
--- a/python/qpid/management.py
+++ b/python/qpid/management.py
@@ -376,22 +376,23 @@ class managementClient:
def replyCb (self, ch, msg):
""" Receive messages via the reply queue of a particular channel. """
codec = Codec (msg.body)
- hdr = self.checkHeader (codec)
- if hdr == None:
- return
+ while True:
+ hdr = self.checkHeader (codec)
+ if hdr == None:
+ return
- if hdr[0] == 'm':
- self.handleMethodReply (ch, codec, hdr[1])
- elif hdr[0] == 'z':
- self.handleCommandComplete (ch, codec, hdr[1])
- elif hdr[0] == 'b':
- self.handleBrokerResponse (ch, codec)
- elif hdr[0] == 'p':
- self.handlePackageInd (ch, codec)
- elif hdr[0] == 'q':
- self.handleClassInd (ch, codec)
- else:
- self.parse (ch, codec, hdr[0], hdr[1])
+ if hdr[0] == 'm':
+ self.handleMethodReply (ch, codec, hdr[1])
+ elif hdr[0] == 'z':
+ self.handleCommandComplete (ch, codec, hdr[1])
+ elif hdr[0] == 'b':
+ self.handleBrokerResponse (ch, codec)
+ elif hdr[0] == 'p':
+ self.handlePackageInd (ch, codec)
+ elif hdr[0] == 'q':
+ self.handleClassInd (ch, codec)
+ else:
+ self.parse (ch, codec, hdr[0], hdr[1])
def exceptCb (self, ch, data):
if self.closeCb != None: