From 922c6f390525faa9a9d65a501a44d8081940194a Mon Sep 17 00:00:00 2001 From: Patrick Uiterwijk Date: Thu, 1 Dec 2016 11:56:34 +0000 Subject: [PATCH] Only check for stomp messages after we decoded any ZMQMessage Signed-off-by: Patrick Uiterwijk --- fedmsg/consumers/__init__.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/fedmsg/consumers/__init__.py b/fedmsg/consumers/__init__.py index 88324b1..a12a587 100644 --- a/fedmsg/consumers/__init__.py +++ b/fedmsg/consumers/__init__.py @@ -204,16 +204,23 @@ def _make_query(page=1): def validate(self, message): """ This needs to raise an exception, caught by moksha. """ - # If we're not validating, then everything is valid. - # If this is turned on globally, our child class can override it. - if not self.validate_signatures: - return - if hasattr(message, '__json__'): message = message.__json__() if isinstance(message['body'], basestring): message['body'] = json.loads(message['body']) + # Massage STOMP messages into a more compatible format. + if 'topic' not in message['body']: + message['body'] = { + 'topic': message.get('topic'), + 'msg': message['body'], + } + + # If we're not validating, then everything is valid. + # If this is turned on globally, our child class can override it. + if not self.validate_signatures: + return + # We assume these match inside fedmsg.crypto, so we should enforce it. if not message['topic'] == message['body']['topic']: raise RuntimeWarning("Topic envelope mismatch.") @@ -223,13 +230,6 @@ def validate(self, message): def _consume(self, message): - # Massage STOMP messages into a more compatible format. - if 'topic' not in message['body']: - message['body'] = { - 'topic': message.get('topic'), - 'msg': message['body'], - } - try: self.validate(message) except RuntimeWarning as e: