chain_width to 50

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-04-22 04:42:26 +00:00
parent 9b658d86b2
commit 76509830e6
190 changed files with 3469 additions and 930 deletions

View File

@@ -35,7 +35,10 @@ where
.filter_map(FlatOk::flat_ok)
.flat_map(IntoIterator::into_iter)
.for_each(|(server, sigs)| {
batch.entry(server).or_default().extend(sigs.into_keys());
batch
.entry(server)
.or_default()
.extend(sigs.into_keys());
});
let batch = batch
@@ -51,8 +54,16 @@ where
S: Iterator<Item = (&'a ServerName, K)> + Send + Clone,
K: Iterator<Item = &'a ServerSigningKeyId> + Send + Clone,
{
let notary_only = self.services.server.config.only_query_trusted_key_servers;
let notary_first_always = self.services.server.config.query_trusted_key_servers_first;
let notary_only = self
.services
.server
.config
.only_query_trusted_key_servers;
let notary_first_always = self
.services
.server
.config
.query_trusted_key_servers_first;
let notary_first_on_join = self
.services
.server
@@ -60,7 +71,10 @@ where
.query_trusted_key_servers_first_on_join;
let requested_servers = batch.clone().count();
let requested_keys = batch.clone().flat_map(|(_, key_ids)| key_ids).count();
let requested_keys = batch
.clone()
.flat_map(|(_, key_ids)| key_ids)
.count();
debug!("acquire {requested_keys} keys from {requested_servers}");
@@ -214,7 +228,8 @@ where
| Err(e) => error!("Failed to contact notary {notary:?}: {e}"),
| Ok(results) =>
for server_keys in results {
self.acquire_notary_result(&mut missing, server_keys).await;
self.acquire_notary_result(&mut missing, server_keys)
.await;
},
}
}
@@ -236,5 +251,8 @@ async fn acquire_notary_result(&self, missing: &mut Batch, server_keys: ServerSi
}
fn keys_count(batch: &Batch) -> usize {
batch.iter().flat_map(|(_, key_ids)| key_ids.iter()).count()
batch
.iter()
.flat_map(|(_, key_ids)| key_ids.iter())
.count()
}

View File

@@ -66,27 +66,44 @@ pub async fn get_verify_key(
origin: &ServerName,
key_id: &ServerSigningKeyId,
) -> Result<VerifyKey> {
let notary_first = self.services.server.config.query_trusted_key_servers_first;
let notary_only = self.services.server.config.only_query_trusted_key_servers;
let notary_first = self
.services
.server
.config
.query_trusted_key_servers_first;
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) {
return Ok(result);
}
if notary_first {
if let Ok(result) = self.get_verify_key_from_notaries(origin, key_id).await {
if let Ok(result) = self
.get_verify_key_from_notaries(origin, key_id)
.await
{
return Ok(result);
}
}
if !notary_only {
if let Ok(result) = self.get_verify_key_from_origin(origin, key_id).await {
if let Ok(result) = self
.get_verify_key_from_origin(origin, key_id)
.await
{
return Ok(result);
}
}
if !notary_first {
if let Ok(result) = self.get_verify_key_from_notaries(origin, key_id).await {
if let Ok(result) = self
.get_verify_key_from_notaries(origin, key_id)
.await
{
return Ok(result);
}
}

View File

@@ -107,8 +107,11 @@ async fn add_signing_keys(&self, new_keys: ServerSigningKeys) {
});
keys.verify_keys.extend(new_keys.verify_keys);
keys.old_verify_keys.extend(new_keys.old_verify_keys);
self.db.server_signingkeys.raw_put(origin, Json(&keys));
keys.old_verify_keys
.extend(new_keys.old_verify_keys);
self.db
.server_signingkeys
.raw_put(origin, Json(&keys));
}
#[implement(Service)]
@@ -177,7 +180,11 @@ pub async fn verify_keys_for(&self, origin: &ServerName) -> VerifyKeys {
#[implement(Service)]
pub async fn signing_keys_for(&self, origin: &ServerName) -> Result<ServerSigningKeys> {
self.db.server_signingkeys.get(origin).await.deserialized()
self.db
.server_signingkeys
.get(origin)
.await
.deserialized()
}
#[implement(Service)]

View File

@@ -42,7 +42,12 @@ where
while let Some(batch) = server_keys
.keys()
.rev()
.take(self.services.server.config.trusted_server_batch_size)
.take(
self.services
.server
.config
.trusted_server_batch_size,
)
.next_back()
.cloned()
{

View File

@@ -11,7 +11,10 @@ pub async fn validate_and_add_event_id(
room_version: &RoomVersionId,
) -> Result<(OwnedEventId, CanonicalJsonObject)> {
let (event_id, mut value) = gen_event_id_canonical_json(pdu, room_version)?;
if let Err(e) = self.verify_event(&value, Some(room_version)).await {
if let Err(e) = self
.verify_event(&value, Some(room_version))
.await
{
return Err!(BadServerResponse(debug_error!(
"Event {event_id} failed verification: {e:?}"
)));
@@ -29,13 +32,19 @@ pub async fn validate_and_add_event_id_no_fetch(
room_version: &RoomVersionId,
) -> Result<(OwnedEventId, CanonicalJsonObject)> {
let (event_id, mut value) = gen_event_id_canonical_json(pdu, room_version)?;
if !self.required_keys_exist(&value, room_version).await {
if !self
.required_keys_exist(&value, room_version)
.await
{
return Err!(BadServerResponse(debug_warn!(
"Event {event_id} cannot be verified: missing keys."
)));
}
if let Err(e) = self.verify_event(&value, Some(room_version)).await {
if let Err(e) = self
.verify_event(&value, Some(room_version))
.await
{
return Err!(BadServerResponse(debug_error!(
"Event {event_id} failed verification: {e:?}"
)));