Fill event_map with all events that will be needed for resolution
This commit is contained in:
		
							parent
							
								
									8de0d9f9ce
								
							
						
					
					
						commit
						168ae8dca0
					
				
					 2 changed files with 22 additions and 11 deletions
				
			
		
							
								
								
									
										2
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							|  | @ -212,8 +212,8 @@ dependencies = [ | |||
|  "js_int", | ||||
|  "jsonwebtoken", | ||||
|  "log", | ||||
|  "regex", | ||||
|  "rand 0.7.3", | ||||
|  "regex", | ||||
|  "reqwest", | ||||
|  "ring", | ||||
|  "rocket", | ||||
|  |  | |||
|  | @ -565,7 +565,7 @@ pub async fn send_transaction_message_route<'a>( | |||
|     for pdu in &body.pdus { | ||||
|         // 1. Is a valid event, otherwise it is dropped.
 | ||||
|         // Ruma/PduEvent/StateEvent satisfies this
 | ||||
| 
 | ||||
|         // TODO: ruma may solve this but our `process_incoming_pdu` needs to return a Result then
 | ||||
|         let (event_id, value) = crate::pdu::process_incoming_pdu(pdu); | ||||
| 
 | ||||
|         // 2. Passes signature checks, otherwise event is dropped.
 | ||||
|  | @ -741,16 +741,24 @@ pub async fn send_transaction_message_route<'a>( | |||
|             let auth_events = fork_states | ||||
|                 .iter() | ||||
|                 .map(|map| { | ||||
|                     db.rooms.auth_events_full( | ||||
|                         pdu.room_id(), | ||||
|                         &map.values() | ||||
|                             .map(|pdu| pdu.event_id().clone()) | ||||
|                             .collect::<Vec<_>>(), | ||||
|                     ) | ||||
|                     db.rooms | ||||
|                         .auth_events_full( | ||||
|                             pdu.room_id(), | ||||
|                             &map.values() | ||||
|                                 .map(|pdu| pdu.event_id().clone()) | ||||
|                                 .collect::<Vec<_>>(), | ||||
|                         ) | ||||
|                         .map(|pdus| pdus.into_iter().map(Arc::new).collect::<Vec<_>>()) | ||||
|                 }) | ||||
|                 .collect(); | ||||
|                 .collect::<Result<Vec<_>>>()?; | ||||
| 
 | ||||
|             // Add as much as we can to the `event_map` (less DB hits)
 | ||||
|             // Add everything we will need to event_map
 | ||||
|             event_map.extend( | ||||
|                 auth_events | ||||
|                     .iter() | ||||
|                     .map(|pdus| pdus.iter().map(|pdu| (pdu.event_id().clone(), pdu.clone()))) | ||||
|                     .flatten(), | ||||
|             ); | ||||
|             event_map.extend( | ||||
|                 incoming_auth_events | ||||
|                     .into_iter() | ||||
|  | @ -773,7 +781,10 @@ pub async fn send_transaction_message_route<'a>( | |||
|                             .collect::<StateMap<_>>() | ||||
|                     }) | ||||
|                     .collect::<Vec<_>>(), | ||||
|                 &auth_events, | ||||
|                 auth_events | ||||
|                     .into_iter() | ||||
|                     .map(|pdus| pdus.into_iter().map(|pdu| pdu.event_id().clone()).collect()) | ||||
|                     .collect(), | ||||
|                 &mut event_map, | ||||
|             ) { | ||||
|                 Ok(res) => res | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue