Skip to content

relay: (d18+)Reject unsupported Mandatory Track Properties (draft-18 … - #697

Draft
akash-a-n wants to merge 1 commit into
d18/namespace-too-largefrom
d18/mandatory-track-extension
Draft

relay: (d18+)Reject unsupported Mandatory Track Properties (draft-18 …#697
akash-a-n wants to merge 1 commit into
d18/namespace-too-largefrom
d18/mandatory-track-extension

Conversation

@akash-a-n

@akash-a-n akash-a-n commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

…§2.5.1)

Add hasUnsupportedMandatoryProperty() (src/relay/TrackProperties.h), a shared helper that flags any extension in the 0x4000-0x7FFF Mandatory Track Property range across both the mutable and immutable extension lists — moqx currently understands none of them.

Wire the check into the three places a peer can hand the relay a mandatory property it can't honor:

  • PUBLISH: publish() and publishFromPublisherExec() reject the request with UNSUPPORTED_EXTENSION before installing a forwarder.
  • SUBSCRIBE_OK: subscribeUpstreamAndApplyOk() rejects the downstream subscribe if the upstream's OK carries one, instead of applying it to the forwarder.
  • FETCH_OK: MoqxCache::fetchUpstream() rejects the fetch and resets the consumer's stream if the upstream's FetchOk carries one, including on the detached background-task path taken when the fast path (live track / known past data) already returned FETCH_OK synchronously.

This change is Reviewable

@akash-a-n
akash-a-n added this pull request to stack #698 September 9, 2026 13:27
…§2.5.1)

Add hasUnsupportedMandatoryProperty() (src/relay/TrackProperties.h), a
shared helper that flags any extension in the 0x4000-0x7FFF Mandatory
Track Property range across both the mutable and immutable extension
lists — moqx currently understands none of them.

Wire the check into the three places a peer can hand the relay a
mandatory property it can't honor:
- PUBLISH: publish() and publishFromPublisherExec() reject the request
  with UNSUPPORTED_EXTENSION before installing a forwarder.
- SUBSCRIBE_OK: subscribeUpstreamAndApplyOk() rejects the downstream
  subscribe if the upstream's OK carries one, instead of applying it
  to the forwarder.
- FETCH_OK: MoqxCache::fetchUpstream() rejects the fetch and resets
  the consumer's stream if the upstream's FetchOk carries one,
  including on the detached background-task path taken when the fast
  path (live track / known past data) already returned FETCH_OK
  synchronously.
@akash-a-n
akash-a-n force-pushed the d18/mandatory-track-extension branch from bdb181c to ccc5514 Compare September 9, 2026 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant