Compare commits

...
This repository has been archived on 2025-08-14. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.

4 commits

Author SHA1 Message Date
strawberry
36bb8c3a5f cargo fmt
Signed-off-by: strawberry <strawberry@puppygock.gay>
2023-12-25 11:04:17 -05:00
Val Lorentz
fb395a1dbc Add missing pub key in send_join handling 2023-12-25 10:41:08 -05:00
Val Lorentz
b8054a5964 Explicitly match RoomVersionId::V11 2023-12-25 10:38:10 -05:00
Val Lorentz
50f4231da6 Reuse existing get_room_version 2023-12-25 10:37:52 -05:00
4 changed files with 29 additions and 23 deletions

View file

@ -146,7 +146,8 @@ pub async fn create_room_route(
})?,
);
}
_ => {} // V11 removed the "creator" key
RoomVersionId::V11 => {} // V11 removed the "creator" key
_ => panic!("Unexpected room version {}", room_version),
}
content.insert(
@ -170,7 +171,8 @@ pub async fn create_room_route(
| RoomVersionId::V8
| RoomVersionId::V9
| RoomVersionId::V10 => RoomCreateEventContent::new_v1(sender_user.clone()),
_ => RoomCreateEventContent::new_v11(),
RoomVersionId::V11 => RoomCreateEventContent::new_v11(),
_ => panic!("Unexpected room version {}", room_version),
};
let mut content = serde_json::from_str::<CanonicalJsonObject>(
to_raw_value(&content)
@ -667,10 +669,11 @@ pub async fn upgrade_room_route(
})?,
);
}
_ => {
RoomVersionId::V11 => {
// "creator" key no longer exists in V11 rooms
create_event_content.remove("creator");
}
_ => panic!("Unexpected room version {}", body.new_version),
}
create_event_content.insert(

View file

@ -1671,6 +1671,12 @@ async fn create_join_event(
)
.map_err(|_| Error::BadRequest(ErrorKind::InvalidParam, "Origin field is invalid."))?;
services()
.rooms
.event_handler
.fetch_required_signing_keys([&value], &pub_key_map)
.await?;
let mutex = Arc::clone(
services()
.globals

View file

@ -1399,7 +1399,8 @@ impl Service {
| RoomVersionId::V8
| RoomVersionId::V9
| RoomVersionId::V10 => RoomCreateEventContent::new_v1(conduit_user.clone()),
_ => RoomCreateEventContent::new_v11(),
RoomVersionId::V11 => RoomCreateEventContent::new_v11(),
_ => panic!("Unexpected room version {}", room_version),
};
content.federate = true;

View file

@ -407,9 +407,7 @@ impl Service {
match pdu.kind {
TimelineEventType::RoomRedaction => {
let room_version_id = self
.get_room_version(&pdu.room_id)?
.expect("Got RoomRedaction in a room of unknown version");
let room_version_id = services().rooms.state.get_room_version(&pdu.room_id)?;
match room_version_id {
RoomVersionId::V1
| RoomVersionId::V2
@ -425,7 +423,7 @@ impl Service {
self.redact_pdu(redact_id, pdu)?;
}
}
_ => {
RoomVersionId::V11 => {
#[derive(Deserialize)]
struct Redaction {
redacts: Option<OwnedEventId>,
@ -439,6 +437,7 @@ impl Service {
self.redact_pdu(redact_id, pdu)?;
}
}
_ => panic!("Unexpected room version {}", room_version_id),
};
}
TimelineEventType::SpaceChild => {
@ -703,9 +702,12 @@ impl Service {
.take(20)
.collect();
let room_version_id = self
.get_room_version(room_id)?
.or_else(|| {
// If there was no create event yet, assume we are creating a room
let room_version_id = services()
.rooms
.state
.get_room_version(room_id)
.or_else(|_| {
if event_type == TimelineEventType::RoomCreate {
#[derive(Deserialize)]
struct RoomCreate {
@ -713,16 +715,13 @@ impl Service {
}
let content = serde_json::from_str::<RoomCreate>(content.get())
.expect("Invalid content in RoomCreate pdu.");
Some(content.room_version)
Ok(content.room_version)
} else {
None
Err(Error::InconsistentRoomState(
"non-create event for room of unknown version",
room_id.to_owned(),
))
}
})
.ok_or_else(|| {
Error::InconsistentRoomState(
"non-create event for room of unknown version",
room_id.to_owned(),
)
})?;
let room_version = RoomVersion::new(&room_version_id).expect("room version is supported");
@ -1094,10 +1093,7 @@ impl Service {
let mut pdu = self
.get_pdu_from_id(&pdu_id)?
.ok_or_else(|| Error::bad_database("PDU ID points to invalid PDU."))?;
let room_version_id = self.get_room_version(&pdu.room_id)?.ok_or_else(|| {
Error::bad_database("Trying to redact PDU in in room of unknown version")
})?;
let room_version_id = services().rooms.state.get_room_version(&pdu.room_id)?;
pdu.redact(room_version_id, reason)?;
self.replace_pdu(
&pdu_id,