Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add FETCH to Relay section #645

Merged
merged 4 commits into from
Jan 16, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 11 additions & 10 deletions draft-ietf-moq-transport.md
Original file line number Diff line number Diff line change
Expand Up @@ -721,10 +721,9 @@ Relays MAY cache Objects, but are not required to.

## Subscriber Interactions

Subscribers interact with the Relays by sending a SUBSCRIBE
({{message-subscribe-req}}) control message for the tracks of
interest. Relays MUST ensure subscribers are authorized to access the
content associated with the track. The authorization
Subscribers interact with the Relays by sending a SUBSCRIBE or FETCH
control message for the tracks of interest. Relays MUST ensure subscribers are
authorized to access the content associated with the track. The authorization
information can be part of subscription request itself or part of the
encompassing session. The specifics of how a relay authorizes a user are
outside the scope of this specification. The subscriber is notified
Expand All @@ -734,11 +733,11 @@ SUBSCRIBE_OK ({{message-subscribe-ok}}) or SUBSCRIBE_ERROR
SUBSCRIBE MUST send only a single response to a given SUBSCRIBE of
either SUBSCRIBE_OK or SUBSCRIBE_ERROR.

If a relay does not already have a subscription for the track,
or if the subscription does not cover all the requested Objects, it
will need to make an upstream subscription. The relay SHOULD NOT
return a SUBCRIBE_OK until at least one SUBSCRIBE_OK has been
received for the track, to ensure the Group Order is correct.
The relay will have to send an upstream SUBSCRIBE and/or FETCH if it does not
have all the objects in the FETCH, or is not currently subscribed to the full
requested range. In this case, it SHOULD withhold sending its own SUBSCRIBE_OK
until receiving one from upstream. It MUST withhold FETCH_OK until receiving
one from upstream.

For successful subscriptions, the publisher maintains a list of
subscribers for each track. Each new OBJECT belonging to the
Expand All @@ -754,7 +753,9 @@ publishers and forward objects to active matching subscriptions.
If multiple objects are received with the same Full Track Name,
Group ID and Object ID, Relays MAY ignore subsequently received Objects
or MAY use them to update the cache. Implementations that update the
cache need to be protect against cache poisoning.
cache need to protect against cache poisoning.

Caching can also reduce the number of upstream FETCH requests.

Objects MUST NOT be sent for unsuccessful subscriptions, and if a subscriber
receives a SUBSCRIBE_ERROR after receiving objects, it MUST close the session
Expand Down
Loading