github openmoq/moqxr v0.4.13

latest release: v0.4.14
7 hours ago

What's Changed

Relay and interop fixes

  • Draft 16: accept the SUBSCRIBE_NAMESPACE bidirectional stream and count its Request ID, so a relay such as moq-relay that opens it before its first SUBSCRIBE no longer gets the session closed with INVALID_REQUEST_ID (#118, fixes #83).
  • --retry and endpoint failover now reconnect after the relay disappears. A connection the peer dropped is reported as failed instead of still connected, so the failure is retryable (#119, fixes #95).
  • Drafts 18 and later answer TRACK_STATUS: a published track gets TRACK_STATUS_OK with LARGEST_OBJECT once it has objects, an unknown track gets DOES_NOT_EXIST, and the stream ends with a FIN. This lets a relay that asks before it subscribes start a track (#120, fixes #94).
  • Draft 18 serves a Joining FETCH of the catalog, so a late catalog subscriber gets the catalog object it missed. A standalone FETCH or a Joining FETCH of another track gets NOT_SUPPORTED (#120).
  • Draft 16 answers FETCH and TRACK_STATUS with NOT_SUPPORTED instead of skipping them (#120).
  • REQUEST_OK decodes LARGEST_OBJECT as a bare Location on drafts 17 and later, matching what moqxr encodes (#109).

Draft 23 interop tester findings

  • Session termination codes follow section 12.2: protocol violations now close with the specific code (for example 0x300 to 0x306, 0x400, 0x401, and 0x200 to 0x202 for datagrams) instead of a generic PROTOCOL_VIOLATION.
  • A second request-stream answer that arrives in the same read as the first is now examined instead of ignored.
  • A subscription's stream now ends with a FIN on request-stream drafts.
  • The reserved subgroup ID mode is rejected.
  • New opt-in flag --moq-impl-id sends the MOQT_IMPLEMENTATION setup option (0x07). It is off by default. See the quickstart.

Fixes #110, #111, #112, #113, #114, #115 and #116 (#117).

Notes

  • Not verified against a live relay: TRACK_STATUS (the relay build available did not send one) and the three live-input session loops, which share the new handler but are covered by the file-input session test only.
  • A Joining FETCH may join a catalog subscription that has already completed, since the fetch reaches the publisher after the catalog object was sent on it. Draft 18 strictly says INVALID_JOINING_REQUEST_ID for that case.
  • A peer-initiated close for a deterministic reason, such as an authorization rejection, is now also retried, bounded by --retry.

Full Changelog: v0.4.12...v0.4.13

Don't miss a new moqxr release

NewReleases is sending notifications on new releases.