Skip to content
Snippets Groups Projects
Unverified Commit 1f32b90b authored by Richard van der Hoff's avatar Richard van der Hoff Committed by GitHub
Browse files

Room batch: fix up handling of unknown prev_event_ids (#12316)

parent 8a519f8a
No related branches found
No related tags found
No related merge requests found
Avoid trying to calculate the state at outlier events.
...@@ -123,6 +123,19 @@ class RoomBatchSendEventRestServlet(RestServlet): ...@@ -123,6 +123,19 @@ class RoomBatchSendEventRestServlet(RestServlet):
errcode=Codes.INVALID_PARAM, errcode=Codes.INVALID_PARAM,
) )
# Make sure that the prev_event_ids exist and aren't outliers - ie, they are
# regular parts of the room DAG where we know the state.
non_outlier_prev_events = await self.store.have_events_in_timeline(
prev_event_ids_from_query
)
for prev_event_id in prev_event_ids_from_query:
if prev_event_id not in non_outlier_prev_events:
raise SynapseError(
HTTPStatus.BAD_REQUEST,
"prev_event %s does not exist, or is an outlier" % (prev_event_id,),
errcode=Codes.INVALID_PARAM,
)
# For the event we are inserting next to (`prev_event_ids_from_query`), # For the event we are inserting next to (`prev_event_ids_from_query`),
# find the most recent state events that allowed that message to be # find the most recent state events that allowed that message to be
# sent. We will use that as a base to auth our historical messages # sent. We will use that as a base to auth our historical messages
...@@ -131,14 +144,6 @@ class RoomBatchSendEventRestServlet(RestServlet): ...@@ -131,14 +144,6 @@ class RoomBatchSendEventRestServlet(RestServlet):
prev_event_ids_from_query prev_event_ids_from_query
) )
if not state_event_ids:
raise SynapseError(
HTTPStatus.BAD_REQUEST,
"No auth events found for given prev_event query parameter. The prev_event=%s probably does not exist."
% prev_event_ids_from_query,
errcode=Codes.INVALID_PARAM,
)
state_event_ids_at_start = [] 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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment