feat: Hook transaction senders into health tracking

This commit is contained in:
timedout authored and Ellis Git committed 2026-08-20 00:57:11 +00:00
1 parent 98466e5243
commit bc1826de66
1 file changed
+13
+13
View File
@@ -393,6 +393,17 @@ impl Service {
dest: &Destination,
statuses: &mut CurTransactionStatus,
) -> Result<(bool, bool)> {
if let Destination::Federation(server_name) = dest {
let status = statuses
.entry(dest.clone())
.or_insert(TransactionStatus::Running);
let retry = matches!(status, TransactionStatus::Failed(_, _));
return match self.services.federation.retry_after(server_name) {
| None => Ok((true, retry)),
| Some(t) => Ok((t.as_millis() > 0, retry)),
};
}
let (mut allow, mut retry) = (true, false);
statuses
.entry(dest.clone())
@@ -457,6 +468,8 @@ impl Service {
events.extend(presence.into_iter().flatten());
events.extend(receipts.into_iter().flatten());
// TODO(nex): some EDUs like typing need flattening
Ok((events, max_edu_count.load(Ordering::Acquire)))
}