Skip to content

fix(relay): acceptance receipts are bounded in size, not only in age #579

Description

@tps-flint

Follow-up from the review of #574 (resend after ACK is judged against its acceptance receipt).

Relay acceptance receipts store the accepted payload so a resend can be compared with it. The wire schema accepts an unbounded content string, and the dead-letter path can write that content into a receipt, so a receipt's size is bounded only by what a sender sends. Day-bucket retention bounds receipts by age, not by size.

The fix: a receipt stores what the comparison needs — a digest of the accepted payload (and its length), not the payload itself — or, if the payload must be kept, a size limit enforced before acceptance with a named refusal. A test sends a payload over the limit (or confirms the receipt holds only the digest) and checks the receipt's size.

Activity

  1. self-assigned this
    on Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions