Compare commits

..

1 Commits

Author SHA1 Message Date
timedout 3d8e763ae8 fix: M_BAD_JSON in send_join and send_knock 2026-01-12 14:29:35 +00:00
3 changed files with 12 additions and 39 deletions
+1 -10
View File
@@ -178,15 +178,6 @@ async fn create_join_event(
}
}
let origin: OwnedServerName = serde_json::from_value(
value
.get("origin")
.ok_or_else(|| err!(Request(BadJson("Event does not have an origin server name."))))?
.clone()
.into(),
)
.map_err(|e| err!(Request(BadJson("Event has an invalid origin server name: {e}"))))?;
trace!("Signing send_join event");
services
.server_keys
@@ -204,7 +195,7 @@ async fn create_join_event(
let pdu_id = services
.rooms
.event_handler
.handle_incoming_pdu(&origin, room_id, &event_id, value.clone(), true)
.handle_incoming_pdu(sender.server_name(), room_id, &event_id, value.clone(), true)
.boxed()
.await?
.ok_or_else(|| err!(Request(InvalidParam("Could not accept as timeline event."))))?;
+1 -10
View File
@@ -136,15 +136,6 @@ pub(crate) async fn create_knock_event_v1_route(
return Err!(Request(InvalidParam("state_key does not match sender user of event.")));
}
let origin: OwnedServerName = serde_json::from_value(
value
.get("origin")
.ok_or_else(|| err!(Request(BadJson("Event does not have an origin server name."))))?
.clone()
.into(),
)
.map_err(|e| err!(Request(BadJson("Event has an invalid origin server name: {e}"))))?;
let mut event: JsonObject = serde_json::from_str(body.pdu.get())
.map_err(|e| err!(Request(InvalidParam("Invalid knock event PDU: {e}"))))?;
@@ -163,7 +154,7 @@ pub(crate) async fn create_knock_event_v1_route(
let pdu_id = services
.rooms
.event_handler
.handle_incoming_pdu(&origin, &body.room_id, &event_id, value.clone(), true)
.handle_incoming_pdu(sender.server_name(), &body.room_id, &event_id, value.clone(), true)
.boxed()
.await?
.ok_or_else(|| err!(Request(InvalidParam("Could not accept as timeline event."))))?;
+10 -19
View File
@@ -36,7 +36,7 @@ pub use self::{
room_version::RoomVersion,
};
use crate::{
debug, err, error as log_error,
debug, debug_error, err,
matrix::{Event, StateKey},
state_res::room_version::StateResolutionVersion,
trace,
@@ -173,8 +173,7 @@ where
initial_state,
&event_fetch,
)
.await
.inspect_err(|_| log_error!("failed to calculate control events"))?;
.await?;
debug!(count = resolved_control.len(), "resolved power events");
trace!(map = ?resolved_control, "resolved power events");
@@ -214,8 +213,7 @@ where
resolved_control, // The control events are added to the final resolved state
&event_fetch,
)
.await
.inspect_err(|_| log_error!("failed to resolve left over state"))?;
.await?;
// Ensure unconflicting state is in the final state
resolved_state.extend(unconflicted);
@@ -402,17 +400,13 @@ where
.await;
let fetcher = async |event_id: OwnedEventId| {
let pl = *event_to_pl.get(&event_id).ok_or_else(|| {
Error::NotFound(format!(
"event unexpectedly missing from power level map: {event_id}",
))
})?;
let pl = *event_to_pl
.get(&event_id)
.ok_or_else(|| Error::NotFound(String::new()))?;
let ev = fetch_event(event_id.clone()).await.ok_or_else(|| {
Error::NotFound(format!(
"event found in power level map but not in room graph: {event_id}",
))
})?;
let ev = fetch_event(event_id)
.await
.ok_or_else(|| Error::NotFound(String::new()))?;
Ok((pl, ev.origin_server_ts()))
};
@@ -764,10 +758,7 @@ where
warn!("event {} failed the authentication check", event.event_id());
},
| Err(e) => {
log_error!(
"failed to run authentication check on event {}: {e}",
event.event_id()
);
debug_error!("event {} failed the authentication check: {e}", event.event_id());
return Err(e);
},
}