Skip to content

Commit 6ae8968

Browse files
do not allow callbacks outside of a server context
1 parent 8ee4cf7 commit 6ae8968

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

socketio/pubsub_manager.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ def emit(self, event, data, namespace=None, room=None, skip_sid=None,
4646
"""
4747
namespace = namespace or '/'
4848
if callback is not None:
49+
if self.server is None:
50+
raise RuntimeError('Callbacks can only be issued from the '
51+
'context of a server.')
4952
if room is None:
5053
raise ValueError('Cannot use callback without a room set.')
5154
id = self._generate_ack_id(room, namespace, callback)

tests/test_pubsub_manager.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ def test_emit_with_callback(self):
6666
'namespace': '/', 'room': 'baz', 'skip_sid': None,
6767
'callback': ('baz', '/', '123')})
6868

69+
def test_emit_with_callback_without_server(self):
70+
standalone_pm = pubsub_manager.PubSubManager()
71+
self.assertRaises(RuntimeError, standalone_pm.emit, 'foo', 'bar',
72+
callback='cb')
73+
6974
def test_emit_with_callback_missing_room(self):
7075
with mock.patch.object(self.pm, '_generate_ack_id',
7176
return_value='123'):

0 commit comments

Comments
 (0)