Room batch: fix up handling of unknown prev_event_ids (#12316)
							parent
							
								
									8a519f8abc
								
							
						
					
					
						commit
						1f32b90b0f
					
				|  | @ -0,0 +1 @@ | |||
| Avoid trying to calculate the state at outlier events. | ||||
|  | @ -123,6 +123,19 @@ class RoomBatchSendEventRestServlet(RestServlet): | |||
|                     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`), | ||||
|         # 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 | ||||
|  | @ -131,14 +144,6 @@ class RoomBatchSendEventRestServlet(RestServlet): | |||
|             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 = [] | ||||
|         # 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 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Richard van der Hoff
						Richard van der Hoff