Skip to content

Commit 0173306

Browse files
Merge pull request #27 from pdecat/master
Avoid KeyError when no room exists
2 parents 6481816 + 626499c commit 0173306

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

socketio/base_manager.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,12 @@ def close_room(self, room, namespace):
8383
def get_rooms(self, sid, namespace):
8484
"""Return the rooms a client is in."""
8585
r = []
86-
for room_name, room in six.iteritems(self.rooms[namespace]):
87-
if room_name is not None and sid in room and room[sid]:
88-
r.append(room_name)
86+
try:
87+
for room_name, room in six.iteritems(self.rooms[namespace]):
88+
if room_name is not None and sid in room and room[sid]:
89+
r.append(room_name)
90+
except KeyError:
91+
pass
8992
return r
9093

9194
def emit(self, event, data, namespace, room=None, skip_sid=None,

tests/test_base_manager.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ def test_leave_invalid_room(self):
131131
self.bm.leave_room('123', '/foo', 'baz')
132132
self.bm.leave_room('123', '/bar', 'baz')
133133

134+
def test_no_room(self):
135+
rooms = self.bm.get_rooms('123', '/foo')
136+
self.assertEqual([], rooms)
137+
134138
def test_close_room(self):
135139
self.bm.connect('123', '/foo')
136140
self.bm.connect('456', '/foo')

0 commit comments

Comments
 (0)