summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaiix <kvn.hou@gmail.com>2021-09-16 02:21:35 +0800
committerAsif Saif Uddin <auvipy@gmail.com>2021-09-16 20:50:28 +0600
commit580b5219cc50cad278c4b664d0e0f85e37a5e9ea (patch)
tree8ba3f392fba69c03669c862ab4aa9c536a5fc0c7
parent07bab02bc3a62c82103993cc1d214d6cd608ef6c (diff)
downloadkombu-580b5219cc50cad278c4b664d0e0f85e37a5e9ea.tar.gz
Fix: check redis response type
-rw-r--r--kombu/transport/redis.py2
-rw-r--r--t/unit/transport/test_redis.py6
2 files changed, 7 insertions, 1 deletions
diff --git a/kombu/transport/redis.py b/kombu/transport/redis.py
index 32a5d4ec..861e612d 100644
--- a/kombu/transport/redis.py
+++ b/kombu/transport/redis.py
@@ -856,7 +856,7 @@ class Channel(virtual.Channel):
except self.connection_errors:
self._in_listen = None
raise
- if response is not None:
+ if isinstance(response, (list, tuple)):
payload = self._handle_message(c, response)
if bytes_to_str(payload['type']).endswith('message'):
channel = bytes_to_str(payload['channel'])
diff --git a/t/unit/transport/test_redis.py b/t/unit/transport/test_redis.py
index 4222d244..cbf37db8 100644
--- a/t/unit/transport/test_redis.py
+++ b/t/unit/transport/test_redis.py
@@ -576,6 +576,12 @@ class test_Channel:
assert self.channel._receive_one(self.channel.subclient) is None
+ def test_receive_invalid_response_type(self):
+ s = self.channel.subclient = Mock()
+ for resp in ['foo', None]:
+ s.parse_response.return_value = resp
+ assert self.channel._receive_one(self.channel.subclient) is None
+
def test_receive_connection_has_gone(self):
def _receive_one(c):
c.connection = None