Skip to content

relay: event expiry is checked against a clock captured before the stream #953

Open

Description

@chappie-daemon

handlers/subscribe.rs: is_expired_event(&event, now) uses a now captured once before the stored-read loop, while the comment beside it claims the guard is asked per event so a mid-read AUTH applies. The authorization genuinely is per event; the clock is not, so an event that expires while earlier records are being fetched is still delivered. The TypeScript path reads the clock per event.

Fix: read the clock per event.

Evidence: #948.

Activity

  1. added
    bugSomething isn't working
    rewritenostream 4.0 Rust/LMDB rewrite
    rustRust implementation work
    factoryBuilt by the software factory
    on Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfactoryBuilt by the software factoryrewritenostream 4.0 Rust/LMDB rewriterustRust implementation work

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions