Merge a message id base once so a straggler cannot join a later report

This commit is contained in:
2026-08-30 11:17:02 +02:00
parent 8a71dbbc87
commit aa3cf41c7f
5 changed files with 86 additions and 16 deletions
-7
View File
@@ -143,13 +143,6 @@ session message is a change to every call site.
closes it on its last line, so an assertion that throws leaves the listener open and
`node --test` never exits: all four CI legs burn the ten-minute cap instead of reporting the
five-second failure. `t.after(() => smpp.close())` fixes it, at every call site.
- [ ] **`DlrMerger.open()` evicts a live group when the base is already held.** `groups.set()`
overwrites without growing the store, so the `dropOldest()` before it discarded another
message's receipts for nothing, and logged the eviction. Guard it on `groups.get(base)`.
- [ ] **A peer that reuses message ids folds one message's receipts into another's report.**
`collect()` keys on the base alone, so a straggler for a group that is gone joins the next group
opened under the same base — reporting a fully delivered message as UNDELIVERABLE. An SMSC whose
id counter restarts with its process is the realistic case. Found by review, 2026-08-28.
- [ ] **`submit_multi` and the broadcast commands** encode and decode, but nothing exercises them
end to end. The interop suite is the natural place.