Fix leaves not being replaced by correct eventId in membership
Update ruma
This commit is contained in:
		
							parent
							
								
									0cc6448dbe
								
							
						
					
					
						commit
						0dd8a15c49
					
				
					 4 changed files with 69 additions and 32 deletions
				
			
		
							
								
								
									
										62
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										62
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							|  | @ -1558,7 +1558,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma" | ||||
| version = "0.0.2" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "assign", | ||||
|  "js_int", | ||||
|  | @ -1569,6 +1569,8 @@ dependencies = [ | |||
|  "ruma-events", | ||||
|  "ruma-federation-api", | ||||
|  "ruma-identifiers", | ||||
|  "ruma-identity-service-api", | ||||
|  "ruma-push-gateway-api", | ||||
|  "ruma-serde", | ||||
|  "ruma-signatures", | ||||
| ] | ||||
|  | @ -1576,7 +1578,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-api" | ||||
| version = "0.17.0-alpha.2" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "http", | ||||
|  "percent-encoding", | ||||
|  | @ -1591,7 +1593,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-api-macros" | ||||
| version = "0.17.0-alpha.2" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "proc-macro-crate", | ||||
|  "proc-macro2", | ||||
|  | @ -1602,7 +1604,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-appservice-api" | ||||
| version = "0.2.0-alpha.2" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "ruma-api", | ||||
|  "ruma-common", | ||||
|  | @ -1616,7 +1618,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-client-api" | ||||
| version = "0.10.0-alpha.2" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "assign", | ||||
|  "http", | ||||
|  | @ -1635,7 +1637,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-common" | ||||
| version = "0.3.0-alpha.1" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "js_int", | ||||
|  "maplit", | ||||
|  | @ -1648,7 +1650,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-events" | ||||
| version = "0.22.0-alpha.2" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "js_int", | ||||
|  "ruma-common", | ||||
|  | @ -1662,7 +1664,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-events-macros" | ||||
| version = "0.22.0-alpha.2" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "proc-macro-crate", | ||||
|  "proc-macro2", | ||||
|  | @ -1673,7 +1675,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-federation-api" | ||||
| version = "0.1.0-alpha.1" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "js_int", | ||||
|  "ruma-api", | ||||
|  | @ -1688,7 +1690,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-identifiers" | ||||
| version = "0.18.0-alpha.1" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "paste", | ||||
|  "rand 0.8.3", | ||||
|  | @ -1702,7 +1704,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-identifiers-macros" | ||||
| version = "0.18.0-alpha.1" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  | @ -1713,12 +1715,40 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-identifiers-validation" | ||||
| version = "0.2.0" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ruma-identity-service-api" | ||||
| version = "0.0.1" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "ruma-api", | ||||
|  "ruma-common", | ||||
|  "ruma-identifiers", | ||||
|  "ruma-serde", | ||||
|  "serde", | ||||
|  "serde_json", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ruma-push-gateway-api" | ||||
| version = "0.0.1" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "js_int", | ||||
|  "ruma-api", | ||||
|  "ruma-common", | ||||
|  "ruma-events", | ||||
|  "ruma-identifiers", | ||||
|  "ruma-serde", | ||||
|  "serde", | ||||
|  "serde_json", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ruma-serde" | ||||
| version = "0.3.0" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "form_urlencoded", | ||||
|  "itoa", | ||||
|  | @ -1731,7 +1761,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-serde-macros" | ||||
| version = "0.3.0" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "proc-macro-crate", | ||||
|  "proc-macro2", | ||||
|  | @ -1742,7 +1772,7 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-signatures" | ||||
| version = "0.6.0-alpha.1" | ||||
| source = "git+https://github.com/ruma/ruma?rev=bba442580d6cd7ed990b2b63387eed2238cbadc8#bba442580d6cd7ed990b2b63387eed2238cbadc8" | ||||
| source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" | ||||
| dependencies = [ | ||||
|  "base64 0.13.0", | ||||
|  "ring", | ||||
|  | @ -2000,7 +2030,7 @@ checksum = "3015a7d0a5fd5105c91c3710d42f9ccf0abfb287d62206484dcc67f9569a6483" | |||
| [[package]] | ||||
| name = "state-res" | ||||
| version = "0.1.0" | ||||
| source = "git+https://github.com/ruma/state-res?rev=791c66d73cf064d09db0cdf767d5fef43a343425#791c66d73cf064d09db0cdf767d5fef43a343425" | ||||
| source = "git+https://github.com/ruma/state-res?branch=main#d34a78c5b66de419862d9e592bde8e0007111ebd" | ||||
| dependencies = [ | ||||
|  "itertools", | ||||
|  "log", | ||||
|  |  | |||
|  | @ -18,14 +18,15 @@ rocket = { git = "https://github.com/SergioBenitez/Rocket.git", rev = "c24f15c18 | |||
| #rocket = { git = "https://github.com/timokoesters/Rocket.git", branch = "empty_parameters", default-features = false, features = ["tls"] } | ||||
| 
 | ||||
| # Used for matrix spec type definitions and helpers | ||||
| ruma = { git = "https://github.com/ruma/ruma", features = ["rand", "appservice-api", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks", "unstable-exhaustive-types"], rev = "bba442580d6cd7ed990b2b63387eed2238cbadc8" } | ||||
| ruma = { git = "https://github.com/ruma/ruma", features = ["rand", "appservice-api", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks", "unstable-exhaustive-types"], rev = "0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" } | ||||
| # ruma = { git = "https://github.com/DevinR528/ruma", features = ["rand", "client-api", "federation-api", "unstable-exhaustive-types", "unstable-pre-spec", "unstable-synapse-quirks"], branch = "verified-export" } | ||||
| # ruma = { path = "../ruma/ruma", features = ["unstable-exhaustive-types", "rand", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks"] } | ||||
| 
 | ||||
| # Used when doing state resolution | ||||
| # state-res = { git = "https://github.com/timokoesters/state-res", branch = "timo-spec-comp", features = ["unstable-pre-spec"] } | ||||
| # TODO: remove the gen-eventid feature | ||||
| state-res = { git = "https://github.com/ruma/state-res", rev = "791c66d73cf064d09db0cdf767d5fef43a343425", features = ["unstable-pre-spec", "gen-eventid"] } | ||||
| state-res = { git = "https://github.com/ruma/state-res", branch = "main", features = ["unstable-pre-spec", "gen-eventid"] } | ||||
| # state-res = { git = "https://github.com/ruma/state-res", rev = "791c66d73cf064d09db0cdf767d5fef43a343425", features = ["unstable-pre-spec", "gen-eventid"] } | ||||
| # state-res = { path = "../../state-res", features = ["unstable-pre-spec", "gen-eventid"] } | ||||
| 
 | ||||
| # Used for long polling and federation sender, should be the same as rocket::tokio | ||||
|  |  | |||
|  | @ -666,7 +666,7 @@ async fn join_room_by_id_helper( | |||
|                 utils::to_canonical_object(&**pdu).expect("Pdu is valid canonical object"), | ||||
|                 count, | ||||
|                 pdu_id.clone().into(), | ||||
|                 &pdu.prev_events, | ||||
|                 &[pdu.event_id.clone()], | ||||
|                 &db, | ||||
|             )?; | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ use crate::{utils, Error, Result}; | |||
| use ruma::{ | ||||
|     api::client::{ | ||||
|         error::ErrorKind, | ||||
|         r0::backup::{BackupAlgorithm, KeyData, Sessions}, | ||||
|         r0::backup::{BackupAlgorithm, KeyBackupData, RoomKeyBackup}, | ||||
|     }, | ||||
|     RoomId, UserId, | ||||
| }; | ||||
|  | @ -129,7 +129,7 @@ impl KeyBackups { | |||
|         version: &str, | ||||
|         room_id: &RoomId, | ||||
|         session_id: &str, | ||||
|         key_data: &KeyData, | ||||
|         key_data: &KeyBackupData, | ||||
|         globals: &super::globals::Globals, | ||||
|     ) -> Result<()> { | ||||
|         let mut key = user_id.to_string().as_bytes().to_vec(); | ||||
|  | @ -153,7 +153,7 @@ impl KeyBackups { | |||
| 
 | ||||
|         self.backupkeyid_backup.insert( | ||||
|             &key, | ||||
|             &*serde_json::to_string(&key_data).expect("KeyData::to_string always works"), | ||||
|             &*serde_json::to_string(&key_data).expect("KeyBackupData::to_string always works"), | ||||
|         )?; | ||||
| 
 | ||||
|         Ok(()) | ||||
|  | @ -182,13 +182,17 @@ impl KeyBackups { | |||
|         .to_string()) | ||||
|     } | ||||
| 
 | ||||
|     pub fn get_all(&self, user_id: &UserId, version: &str) -> Result<BTreeMap<RoomId, Sessions>> { | ||||
|     pub fn get_all( | ||||
|         &self, | ||||
|         user_id: &UserId, | ||||
|         version: &str, | ||||
|     ) -> Result<BTreeMap<RoomId, RoomKeyBackup>> { | ||||
|         let mut prefix = user_id.to_string().as_bytes().to_vec(); | ||||
|         prefix.push(0xff); | ||||
|         prefix.extend_from_slice(version.as_bytes()); | ||||
|         prefix.push(0xff); | ||||
| 
 | ||||
|         let mut rooms = BTreeMap::<RoomId, Sessions>::new(); | ||||
|         let mut rooms = BTreeMap::<RoomId, RoomKeyBackup>::new(); | ||||
| 
 | ||||
|         for result in self.backupkeyid_backup.scan_prefix(&prefix).map(|r| { | ||||
|             let (key, value) = r?; | ||||
|  | @ -211,15 +215,16 @@ impl KeyBackups { | |||
|             ) | ||||
|             .map_err(|_| Error::bad_database("backupkeyid_backup room_id is invalid room id."))?; | ||||
| 
 | ||||
|             let key_data = serde_json::from_slice(&value) | ||||
|                 .map_err(|_| Error::bad_database("KeyData in backupkeyid_backup is invalid."))?; | ||||
|             let key_data = serde_json::from_slice(&value).map_err(|_| { | ||||
|                 Error::bad_database("KeyBackupData in backupkeyid_backup is invalid.") | ||||
|             })?; | ||||
| 
 | ||||
|             Ok::<_, Error>((room_id, session_id, key_data)) | ||||
|         }) { | ||||
|             let (room_id, session_id, key_data) = result?; | ||||
|             rooms | ||||
|                 .entry(room_id) | ||||
|                 .or_insert_with(|| Sessions { | ||||
|                 .or_insert_with(|| RoomKeyBackup { | ||||
|                     sessions: BTreeMap::new(), | ||||
|                 }) | ||||
|                 .sessions | ||||
|  | @ -234,7 +239,7 @@ impl KeyBackups { | |||
|         user_id: &UserId, | ||||
|         version: &str, | ||||
|         room_id: &RoomId, | ||||
|     ) -> BTreeMap<String, KeyData> { | ||||
|     ) -> BTreeMap<String, KeyBackupData> { | ||||
|         let mut prefix = user_id.to_string().as_bytes().to_vec(); | ||||
|         prefix.push(0xff); | ||||
|         prefix.extend_from_slice(version.as_bytes()); | ||||
|  | @ -257,7 +262,7 @@ impl KeyBackups { | |||
|                     })?; | ||||
| 
 | ||||
|                 let key_data = serde_json::from_slice(&value).map_err(|_| { | ||||
|                     Error::bad_database("KeyData in backupkeyid_backup is invalid.") | ||||
|                     Error::bad_database("KeyBackupData in backupkeyid_backup is invalid.") | ||||
|                 })?; | ||||
| 
 | ||||
|                 Ok::<_, Error>((session_id, key_data)) | ||||
|  | @ -272,7 +277,7 @@ impl KeyBackups { | |||
|         version: &str, | ||||
|         room_id: &RoomId, | ||||
|         session_id: &str, | ||||
|     ) -> Result<Option<KeyData>> { | ||||
|     ) -> Result<Option<KeyBackupData>> { | ||||
|         let mut key = user_id.to_string().as_bytes().to_vec(); | ||||
|         key.push(0xff); | ||||
|         key.extend_from_slice(version.as_bytes()); | ||||
|  | @ -284,8 +289,9 @@ impl KeyBackups { | |||
|         self.backupkeyid_backup | ||||
|             .get(&key)? | ||||
|             .map(|value| { | ||||
|                 serde_json::from_slice(&value) | ||||
|                     .map_err(|_| Error::bad_database("KeyData in backupkeyid_backup is invalid.")) | ||||
|                 serde_json::from_slice(&value).map_err(|_| { | ||||
|                     Error::bad_database("KeyBackupData in backupkeyid_backup is invalid.") | ||||
|                 }) | ||||
|             }) | ||||
|             .transpose() | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue