joule-contrib: an SRT sender probes a stalled tail, so a lost newest packet is recovered #503
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/srt-close-after-drain"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
An SRT sender now probes a stalled tail. Live-contribution §4.1 and the changelog say so.
A receiver finds a gap only when a later packet arrives. So if the newest packet is lost, nothing asks for it, and the sender held it until it expired. CI's linux-arm64 leg failed
an_srt_publisher_reaches_a_relay_subscriber_with_every_receipton #499 this way.When the acknowledged position has not moved for 2 × RTT + 20 ms, and the newest packet held went out that long ago, the sender sends that packet again with the R flag set. The wait doubles with each probe, to at most 16 times the first, and resets when an ACK removes a packet.
SendCountsgains two fields:probes, counted separately fromretransmitted, which still means retransmissions in answer to requests;unacknowledged, for SRT only.The test now closes the publisher once nothing is unacknowledged. It also requires
expired == 0, and its end-code assertion prints the code it read.Evidence (Framework box, x86_64 Linux)
expired: 1The job's own commands all pass:
cargo test -p joule-contrib --all-targets--features ristcargo test -p joule-moq-ingest --all-targets--features ristThe link-vector corpus check passes (101 files). Clippy reports nothing in the changed files. The comparative-prose, vanity, spec-refs and section-refs checks pass.
🤖 Generated with Claude Code