Description
ThirdPartyEventRulesModuleApiCallbacks.check_event_allowed() freezes incoming events for safety purpose, but the Rust implementation of PushRuleEvaluator doesn't seem to handle immutabledict.
Steps to reproduce
- extend the server config with
default_power_level_content_override:
public_chat:
notifications:
room: 0
- register a module which register a
check_event_allowed callback. The callback could do nothing, eg: return (True, None)
- try to create a public room to see the bug
Homeserver
a local homeserver
Synapse Version
v1.122.0
Installation Method
Docker (matrixdotorg/synapse)
Database
PostgreSQL 15
Workers
Single process
Platform
Ubuntu 24.04
Configuration
No response
Relevant log output
File "/usr/local/lib/python3.12/site-packages/synapse/push/bulk_push_rule_evaluator.py", line 429, in _action_for_event_by_user
evaluator = PushRuleEvaluator(
^^^^^^^^^^^^^^^^^^
TypeError: argument 'notification_power_levels': 'immutabledict' object cannot be converted to 'PyDict'
Anything else that would be useful to know?
No response
Description
ThirdPartyEventRulesModuleApiCallbacks.check_event_allowed()freezes incoming events for safety purpose, but the Rust implementation ofPushRuleEvaluatordoesn't seem to handleimmutabledict.Steps to reproduce
check_event_allowed callback. The callback could do nothing, eg: return (True, None)Homeserver
a local homeserver
Synapse Version
v1.122.0
Installation Method
Docker (matrixdotorg/synapse)
Database
PostgreSQL 15
Workers
Single process
Platform
Ubuntu 24.04
Configuration
No response
Relevant log output
Anything else that would be useful to know?
No response