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 = |             let shortstatekey = | ||||||
|                 self.get_or_create_shortstatekey(&new_pdu.kind, &state_key, globals)?; |                 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 |             let replaces = states_parents | ||||||
|                 .last() |                 .last() | ||||||
|                 .map(|info| { |                 .map(|info| { | ||||||
|  | @ -1580,11 +1582,14 @@ impl Rooms { | ||||||
|                 }) |                 }) | ||||||
|                 .unwrap_or_default(); |                 .unwrap_or_default(); | ||||||
| 
 | 
 | ||||||
|  |             if Some(&new) == replaces { | ||||||
|  |                 return Ok(previous_shortstatehash.expect("must exist")); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             // TODO: statehash with deterministic inputs
 |             // TODO: statehash with deterministic inputs
 | ||||||
|             let shortstatehash = globals.next_count()?; |             let shortstatehash = globals.next_count()?; | ||||||
| 
 | 
 | ||||||
|             let mut statediffnew = HashSet::new(); |             let mut statediffnew = HashSet::new(); | ||||||
|             let new = self.compress_state_event(shortstatekey, &new_pdu.event_id, globals)?; |  | ||||||
|             statediffnew.insert(new); |             statediffnew.insert(new); | ||||||
| 
 | 
 | ||||||
|             let mut statediffremoved = HashSet::new(); |             let mut statediffremoved = HashSet::new(); | ||||||
|  |  | ||||||
|  | @ -907,7 +907,7 @@ pub async fn handle_incoming_pdu<'a>( | ||||||
|             if let Some(json) = |             if let Some(json) = | ||||||
|                 json_opt.or_else(|| db.rooms.get_outlier_pdu_json(&prev_event_id).ok().flatten()) |                 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 |                     > db.rooms | ||||||
|                         .first_pdu_in_room(&room_id) |                         .first_pdu_in_room(&room_id) | ||||||
|                         .map_err(|_| "Error loading first room event.".to_owned())? |                         .map_err(|_| "Error loading first room event.".to_owned())? | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue