fix: don't load endless prev events and fix room join bug
This commit is contained in:
		
							parent
							
								
									2c3bee34a0
								
							
						
					
					
						commit
						0823506d05
					
				
					 2 changed files with 7 additions and 2 deletions
				
			
		|  | @ -1571,6 +1571,8 @@ impl Rooms { | |||
|             let shortstatekey = | ||||
|                 self.get_or_create_shortstatekey(&new_pdu.kind, &state_key, globals)?; | ||||
| 
 | ||||
|             let new = self.compress_state_event(shortstatekey, &new_pdu.event_id, globals)?; | ||||
| 
 | ||||
|             let replaces = states_parents | ||||
|                 .last() | ||||
|                 .map(|info| { | ||||
|  | @ -1580,11 +1582,14 @@ impl Rooms { | |||
|                 }) | ||||
|                 .unwrap_or_default(); | ||||
| 
 | ||||
|             if Some(&new) == replaces { | ||||
|                 return Ok(previous_shortstatehash.expect("must exist")); | ||||
|             } | ||||
| 
 | ||||
|             // TODO: statehash with deterministic inputs
 | ||||
|             let shortstatehash = globals.next_count()?; | ||||
| 
 | ||||
|             let mut statediffnew = HashSet::new(); | ||||
|             let new = self.compress_state_event(shortstatekey, &new_pdu.event_id, globals)?; | ||||
|             statediffnew.insert(new); | ||||
| 
 | ||||
|             let mut statediffremoved = HashSet::new(); | ||||
|  |  | |||
|  | @ -907,7 +907,7 @@ pub async fn handle_incoming_pdu<'a>( | |||
|             if let Some(json) = | ||||
|                 json_opt.or_else(|| db.rooms.get_outlier_pdu_json(&prev_event_id).ok().flatten()) | ||||
|             { | ||||
|                 if incoming_pdu.origin_server_ts | ||||
|                 if pdu.origin_server_ts | ||||
|                     > db.rooms | ||||
|                         .first_pdu_in_room(&room_id) | ||||
|                         .map_err(|_| "Error loading first room event.".to_owned())? | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue