Skip to content

Commit 9858a09

Browse files
authored
Merge pull request redis#904 from swilly22/client_list_response_parsing
clientlist response, client_name value might contain the '=' character, in that case response parser will fail
2 parents e584196 + 6dec9c1 commit 9858a09

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

redis/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,8 @@ def bool_ok(response):
245245
def parse_client_list(response, **options):
246246
clients = []
247247
for c in nativestr(response).splitlines():
248-
clients.append(dict([pair.split('=') for pair in c.split(' ')]))
248+
# Values might contain '='
249+
clients.append(dict([pair.split('=', 1) for pair in c.split(' ')]))
249250
return clients
250251

251252

tests/test_commands.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,14 @@ def test_client_setname(self, r):
6868
assert r.client_setname('redis_py_test')
6969
assert r.client_getname() == 'redis_py_test'
7070

71+
@skip_if_server_version_lt('2.6.9')
72+
def test_client_list_after_client_setname(self, r):
73+
r.client_setname('cl=i=ent')
74+
clients = r.client_list()
75+
assert isinstance(clients[0], dict)
76+
assert 'name' in clients[0]
77+
assert clients[0]['name'] == 'cl=i=ent'
78+
7179
def test_config_get(self, r):
7280
data = r.config_get()
7381
assert 'maxmemory' in data

0 commit comments

Comments
 (0)