mirror of
https://github.com/element-hq/synapse.git
synced 2024-12-14 11:57:44 +00:00
Fix bug when rejecting withdrew invite with a third_party_rules module (#17930)
Some checks are pending
Build docker images / build (push) Waiting to run
Deploy the documentation / Calculate variables for GitHub Pages deployment (push) Waiting to run
Deploy the documentation / GitHub Pages (push) Blocked by required conditions
Build release artifacts / Calculate list of debian distros (push) Waiting to run
Build release artifacts / Build .deb packages (push) Blocked by required conditions
Build release artifacts / Build wheels on ubuntu-22.04 for aarch64 (push) Waiting to run
Build release artifacts / Build wheels on macos-13 for x86_64 (push) Waiting to run
Build release artifacts / Build wheels on ubuntu-22.04 for x86_64 (push) Waiting to run
Build release artifacts / Build sdist (push) Waiting to run
Build release artifacts / Attach assets to release (push) Blocked by required conditions
Tests / calculate-test-jobs (push) Blocked by required conditions
Tests / changes (push) Waiting to run
Tests / check-sampleconfig (push) Blocked by required conditions
Tests / check-schema-delta (push) Blocked by required conditions
Tests / check-lockfile (push) Waiting to run
Tests / lint (push) Blocked by required conditions
Tests / Typechecking (push) Blocked by required conditions
Tests / lint-crlf (push) Waiting to run
Tests / lint-newsfile (push) Waiting to run
Tests / lint-pydantic (push) Blocked by required conditions
Tests / lint-clippy (push) Blocked by required conditions
Tests / lint-clippy-nightly (push) Blocked by required conditions
Tests / lint-rustfmt (push) Blocked by required conditions
Tests / lint-readme (push) Blocked by required conditions
Tests / linting-done (push) Blocked by required conditions
Tests / trial (push) Blocked by required conditions
Tests / trial-olddeps (push) Blocked by required conditions
Tests / trial-pypy (all, pypy-3.9) (push) Blocked by required conditions
Tests / sytest (push) Blocked by required conditions
Tests / export-data (push) Blocked by required conditions
Tests / portdb (11, 3.9) (push) Blocked by required conditions
Tests / portdb (17, 3.13) (push) Blocked by required conditions
Tests / complement (monolith, Postgres) (push) Blocked by required conditions
Tests / complement (monolith, SQLite) (push) Blocked by required conditions
Tests / complement (workers, Postgres) (push) Blocked by required conditions
Tests / cargo-test (push) Blocked by required conditions
Tests / cargo-bench (push) Blocked by required conditions
Tests / tests-done (push) Blocked by required conditions
Some checks are pending
Build docker images / build (push) Waiting to run
Deploy the documentation / Calculate variables for GitHub Pages deployment (push) Waiting to run
Deploy the documentation / GitHub Pages (push) Blocked by required conditions
Build release artifacts / Calculate list of debian distros (push) Waiting to run
Build release artifacts / Build .deb packages (push) Blocked by required conditions
Build release artifacts / Build wheels on ubuntu-22.04 for aarch64 (push) Waiting to run
Build release artifacts / Build wheels on macos-13 for x86_64 (push) Waiting to run
Build release artifacts / Build wheels on ubuntu-22.04 for x86_64 (push) Waiting to run
Build release artifacts / Build sdist (push) Waiting to run
Build release artifacts / Attach assets to release (push) Blocked by required conditions
Tests / calculate-test-jobs (push) Blocked by required conditions
Tests / changes (push) Waiting to run
Tests / check-sampleconfig (push) Blocked by required conditions
Tests / check-schema-delta (push) Blocked by required conditions
Tests / check-lockfile (push) Waiting to run
Tests / lint (push) Blocked by required conditions
Tests / Typechecking (push) Blocked by required conditions
Tests / lint-crlf (push) Waiting to run
Tests / lint-newsfile (push) Waiting to run
Tests / lint-pydantic (push) Blocked by required conditions
Tests / lint-clippy (push) Blocked by required conditions
Tests / lint-clippy-nightly (push) Blocked by required conditions
Tests / lint-rustfmt (push) Blocked by required conditions
Tests / lint-readme (push) Blocked by required conditions
Tests / linting-done (push) Blocked by required conditions
Tests / trial (push) Blocked by required conditions
Tests / trial-olddeps (push) Blocked by required conditions
Tests / trial-pypy (all, pypy-3.9) (push) Blocked by required conditions
Tests / sytest (push) Blocked by required conditions
Tests / export-data (push) Blocked by required conditions
Tests / portdb (11, 3.9) (push) Blocked by required conditions
Tests / portdb (17, 3.13) (push) Blocked by required conditions
Tests / complement (monolith, Postgres) (push) Blocked by required conditions
Tests / complement (monolith, SQLite) (push) Blocked by required conditions
Tests / complement (workers, Postgres) (push) Blocked by required conditions
Tests / cargo-test (push) Blocked by required conditions
Tests / cargo-bench (push) Blocked by required conditions
Tests / tests-done (push) Blocked by required conditions
When rejecting a withdrew invite through federation, an out of band event needs to be created. When doing so with a third_party_rules module installed, `get_prev_state_ids` [is called](e0fdb862cb/synapse/module_api/callbacks/third_party_event_rules_callbacks.py (L285)
) on the context to calculate the state to pass at `check_event_allowed` callbacks. The context for outliers is defined [here](e0fdb862cb/synapse/events/snapshot.py (L168)
), and `state_group_before_event` is None. This change makes the behavior of `get_prev_state_ids` and `get_current_state_ids` match the one presented in the docstring regarding null state_group.
This commit is contained in:
parent
adce8a0111
commit
5cf74c2da0
2 changed files with 6 additions and 5 deletions
1
changelog.d/17930.bugfix
Normal file
1
changelog.d/17930.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix bug when rejecting withdrew invite with a third_party_rules module, where the invite would be stuck for the client.
|
|
@ -248,7 +248,7 @@ class EventContext(UnpersistedEventContextBase):
|
||||||
@tag_args
|
@tag_args
|
||||||
async def get_current_state_ids(
|
async def get_current_state_ids(
|
||||||
self, state_filter: Optional["StateFilter"] = None
|
self, state_filter: Optional["StateFilter"] = None
|
||||||
) -> Optional[StateMap[str]]:
|
) -> StateMap[str]:
|
||||||
"""
|
"""
|
||||||
Gets the room state map, including this event - ie, the state in ``state_group``
|
Gets the room state map, including this event - ie, the state in ``state_group``
|
||||||
|
|
||||||
|
@ -256,13 +256,12 @@ class EventContext(UnpersistedEventContextBase):
|
||||||
not make it into the room state. This method will raise an exception if
|
not make it into the room state. This method will raise an exception if
|
||||||
``rejected`` is set.
|
``rejected`` is set.
|
||||||
|
|
||||||
|
It is also an error to access this for an outlier event.
|
||||||
|
|
||||||
Arg:
|
Arg:
|
||||||
state_filter: specifies the type of state event to fetch from DB, example: EventTypes.JoinRules
|
state_filter: specifies the type of state event to fetch from DB, example: EventTypes.JoinRules
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Returns None if state_group is None, which happens when the associated
|
|
||||||
event is an outlier.
|
|
||||||
|
|
||||||
Maps a (type, state_key) to the event ID of the state event matching
|
Maps a (type, state_key) to the event ID of the state event matching
|
||||||
this tuple.
|
this tuple.
|
||||||
"""
|
"""
|
||||||
|
@ -300,7 +299,8 @@ class EventContext(UnpersistedEventContextBase):
|
||||||
this tuple.
|
this tuple.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert self.state_group_before_event is not None
|
if self.state_group_before_event is None:
|
||||||
|
return {}
|
||||||
return await self._storage.state.get_state_ids_for_group(
|
return await self._storage.state.get_state_ids_for_group(
|
||||||
self.state_group_before_event, state_filter
|
self.state_group_before_event, state_filter
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue