mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-05-26 20:49:55 +00:00
Implement room v12 (#943)
**Does not yet work!** Currently, state resolution does not correctly resolve conflicting states. Everything else appears to work as expected, so stateres will be fixed soon, then we should be clear for takeoff. Also: a lot of things currently accept a nullable room ID that really just don't need to. This will need tidying up before merge. Some authentication checks have also been disabled temporarily but nothing important. A lot of things are tagged with `TODO(hydra)`, those need resolving before merge. External contributors should PR to the `hydra/public` branch, *not* ` main`. --- This PR should be squash merged. Reviewed-on: https://forgejo.ellis.link/continuwuation/continuwuity/pulls/943 Co-authored-by: nexy7574 <git@nexy7574.co.uk> Co-committed-by: nexy7574 <git@nexy7574.co.uk>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use std::borrow::Borrow;
|
||||
|
||||
use conduwuit::{Err, Result, implement};
|
||||
use conduwuit::{Err, Result, debug_error, implement, trace};
|
||||
use ruma::{
|
||||
CanonicalJsonObject, RoomVersionId, ServerName, ServerSigningKeyId,
|
||||
api::federation::discovery::VerifyKey,
|
||||
@@ -19,9 +19,11 @@ pub async fn get_event_keys(
|
||||
let required = match required_keys(object, version) {
|
||||
| Ok(required) => required,
|
||||
| Err(e) => {
|
||||
debug_error!("Failed to determine keys required to verify: {e}");
|
||||
return Err!(BadServerResponse("Failed to determine keys required to verify: {e}"));
|
||||
},
|
||||
};
|
||||
trace!(?required, "Keys required to verify event");
|
||||
|
||||
let batch = required
|
||||
.iter()
|
||||
@@ -61,6 +63,7 @@ where
|
||||
}
|
||||
|
||||
#[implement(super::Service)]
|
||||
#[tracing::instrument(skip(self))]
|
||||
pub async fn get_verify_key(
|
||||
&self,
|
||||
origin: &ServerName,
|
||||
@@ -70,6 +73,7 @@ pub async fn get_verify_key(
|
||||
let notary_only = self.services.server.config.only_query_trusted_key_servers;
|
||||
|
||||
if let Some(result) = self.verify_keys_for(origin).await.remove(key_id) {
|
||||
trace!("Found key in cache");
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user