Skip to content

Commit 3ae013b

Browse files
validate namespace in disconnect call
Fixes miguelgrinberg/Flask-SocketIO#427
1 parent fe8a75f commit 3ae013b

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

socketio/base_manager.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ def pre_disconnect(self, sid, namespace):
6464

6565
def disconnect(self, sid, namespace):
6666
"""Register a client disconnect from a namespace."""
67+
if namespace not in self.rooms:
68+
return
6769
rooms = []
6870
for room_name, room in six.iteritems(self.rooms[namespace]):
6971
if sid in room:

tests/test_base_manager.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ def test_disconnect_with_callbacks(self):
9999
self.bm.disconnect('123', '/')
100100
self.assertNotIn('123', self.bm.callbacks)
101101

102+
def test_disconnect_bad_namespace(self):
103+
self.bm.connect('123', '/')
104+
self.bm.connect('123', '/foo')
105+
self.bm.disconnect('123', '/bar') # should not assert
106+
102107
def test_trigger_callback(self):
103108
self.bm.connect('123', '/')
104109
self.bm.connect('123', '/foo')

0 commit comments

Comments
 (0)