mirror of
https://forgejo.ellis.link/continuwuation/continuwuity/
synced 2026-10-24 00:12:25 +00:00
fix: Mark state and auth chain events as referenced after joining a room
It's generally safe to assume that all of these events have been referenced by the time we get to joining.
This commit is contained in:
1 file changed
+9
-7
@@ -1,4 +1,4 @@
|
||||
use std::{collections::HashMap, sync::Arc};
|
||||
use std::{collections::HashMap, iter::once, sync::Arc};
|
||||
|
||||
use conduwuit::{
|
||||
Err, Event, Pdu, Result, Server, debug, debug_info, debug_warn, defer, err, error, info,
|
||||
@@ -533,6 +533,9 @@ pub async fn join_remote_room(
|
||||
}
|
||||
self.services.outlier.add_pdu_outlier(&event_id, &value);
|
||||
self.services.pdu_metadata.clear_pdu_markers(&event_id);
|
||||
self.services
|
||||
.pdu_metadata
|
||||
.mark_as_referenced(room_id, once(event_id.as_ref()));
|
||||
if let Some(state_key) = &pdu.state_key {
|
||||
let shortstatekey = self
|
||||
.services
|
||||
@@ -565,6 +568,9 @@ pub async fn join_remote_room(
|
||||
trace!(%event_id, "Adding PDU as an outlier from send_join auth_chain");
|
||||
self.services.outlier.add_pdu_outlier(&event_id, &value);
|
||||
self.services.pdu_metadata.clear_pdu_markers(&event_id);
|
||||
self.services
|
||||
.pdu_metadata
|
||||
.mark_as_referenced(room_id, once(event_id.as_ref()));
|
||||
let state_key = value
|
||||
.get("state_key")
|
||||
.and_then(|s| s.as_str())
|
||||
@@ -672,7 +678,7 @@ pub async fn join_remote_room(
|
||||
.append_pdu(
|
||||
&parsed_join_pdu,
|
||||
join_event,
|
||||
std::iter::once(parsed_join_pdu.event_id.as_ref()),
|
||||
once(parsed_join_pdu.event_id.as_ref()),
|
||||
&state_lock,
|
||||
room_id,
|
||||
)
|
||||
@@ -698,11 +704,7 @@ pub async fn join_remote_room(
|
||||
info!("Replacing local forward extremities");
|
||||
self.services
|
||||
.state
|
||||
.set_forward_extremities(
|
||||
room_id,
|
||||
std::iter::once(parsed_join_pdu.event_id()),
|
||||
&state_lock,
|
||||
)
|
||||
.set_forward_extremities(room_id, once(parsed_join_pdu.event_id()), &state_lock)
|
||||
.await;
|
||||
}
|
||||
drop(cork);
|
||||
|
||||
Reference in new issue
Block a user