Support sending no state_events_at_start in the MSC2716 /batch_send endpoint (#11188)

As brought up by @tulir, https://matrix.to/#/!SBYNQlpqkwJzFIdzxI:nevarro.space/$Gwnb2ZvXHc3poYXuBhho0cmoYq4KJ11Jh3m5s8kjNOM?via=nevarro.space&via=beeper.com&via=matrix.org

This use case only works if the user is already joined in the current room state
at the given `?prev_event_id`
This commit is contained in:
Eric Eastwood 2021-11-03 03:13:51 -05:00 committed by GitHub
parent 6250b95efe
commit da0040785e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 12 deletions

1
changelog.d/11188.bugfix Normal file
View file

@ -0,0 +1 @@
Allow an empty list of `state_events_at_start` to be sent when using the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint and the author of the historical messages is already part of the current room state at the given `?prev_event_id`.

View file

@ -131,9 +131,11 @@ class RoomBatchSendEventRestServlet(RestServlet):
prev_event_ids_from_query prev_event_ids_from_query
) )
state_event_ids_at_start = []
# Create and persist all of the state events that float off on their own # Create and persist all of the state events that float off on their own
# before the batch. These will most likely be all of the invite/member # before the batch. These will most likely be all of the invite/member
# state events used to auth the upcoming historical messages. # state events used to auth the upcoming historical messages.
if body["state_events_at_start"]:
state_event_ids_at_start = ( state_event_ids_at_start = (
await self.room_batch_handler.persist_state_events_at_start( await self.room_batch_handler.persist_state_events_at_start(
state_events_at_start=body["state_events_at_start"], state_events_at_start=body["state_events_at_start"],
@ -197,7 +199,10 @@ class RoomBatchSendEventRestServlet(RestServlet):
# Also connect the historical event chain to the end of the floating # Also connect the historical event chain to the end of the floating
# state chain, which causes the HS to ask for the state at the start of # state chain, which causes the HS to ask for the state at the start of
# the batch later. # the batch later. If there is no state chain to connect to, just make
# the insertion event float itself.
prev_event_ids = []
if len(state_event_ids_at_start):
prev_event_ids = [state_event_ids_at_start[-1]] prev_event_ids = [state_event_ids_at_start[-1]]
# Create and persist all of the historical events as well as insertion # Create and persist all of the historical events as well as insertion