feat(server): Path B zero-match → undeliverable ack (#18)

processDmCallStartEvent Path B no longer silently accepts when no local
participant is reachable. Pushes {messageId, reason: 'no_recipient'} to
the undeliverable ack bucket so the caller can surface fast-fail.
TDD — test asserts undeliverable push + no FederatedCallEntry.
This commit is contained in:
Jannis Braun
2026-04-24 19:34:34 +02:00
parent 0057cb4d42
commit 792634c2cf
2 changed files with 113 additions and 2 deletions
+5 -2
View File
@@ -4402,8 +4402,11 @@ function processDmCallStartEvent(
}
if (ringedUserIds.length === 0) {
// No connected users found — silently accept (not an error)
accepted.push(event.messageId);
// No recipient reachable — signal to caller via third ack bucket (#18).
// The remote processed the event cleanly; this is not a data error, but
// the caller must learn that nobody was rung so it can tear down its
// local ring room instead of hanging 60s waiting for an accept.
undeliverable.push({ messageId: event.messageId, reason: 'no_recipient' });
return;
}