@@ -735,10 +735,9 @@ Relays MAY cache Objects, but are not required to.
735735
736736# # Subscriber Interactions
737737
738- Subscribers interact with the Relays by sending a SUBSCRIBE
739- ({{message-subscribe-req}}) control message for the tracks of
740- interest. Relays MUST ensure subscribers are authorized to access the
741- content associated with the track. The authorization
738+ Subscribers interact with the Relays by sending a SUBSCRIBE or FETCH
739+ control message for the tracks of interest. Relays MUST ensure subscribers are
740+ authorized to access the content associated with the track. The authorization
742741information can be part of subscription request itself or part of the
743742encompassing session. The specifics of how a relay authorizes a user are
744743outside the scope of this specification. The subscriber is notified
@@ -748,11 +747,11 @@ SUBSCRIBE_OK ({{message-subscribe-ok}}) or SUBSCRIBE_ERROR
748747SUBSCRIBE MUST send only a single response to a given SUBSCRIBE of
749748either SUBSCRIBE_OK or SUBSCRIBE_ERROR.
750749
751- If a relay does not already have a subscription for the track,
752- or if the subscription does not cover all the requested Objects, it
753- will need to make an upstream subscription. The relay SHOULD NOT
754- return a SUBCRIBE_OK until at least one SUBSCRIBE_OK has been
755- received for the track, to ensure the Group Order is correct .
750+ The relay will have to send an upstream SUBSCRIBE and/or FETCH if it does not
751+ have all the objects in the FETCH, or is not currently subscribed to the full
752+ requested range. In this case, it SHOULD withhold sending its own SUBSCRIBE_OK
753+ until receiving one from upstream. It MUST withhold FETCH_OK until receiving
754+ one from upstream .
756755
757756For successful subscriptions, the publisher maintains a list of
758757subscribers for each track. Each new OBJECT belonging to the
@@ -768,7 +767,9 @@ publishers and forward objects to active matching subscriptions.
768767If multiple objects are received with the same Full Track Name,
769768Group ID and Object ID, Relays MAY ignore subsequently received Objects
770769or MAY use them to update the cache. Implementations that update the
771- cache need to be protect against cache poisoning.
770+ cache need to protect against cache poisoning.
771+
772+ Caching can also reduce the number of upstream FETCH requests.
772773
773774Objects MUST NOT be sent for unsuccessful subscriptions, and if a subscriber
774775receives a SUBSCRIBE_ERROR after receiving objects, it MUST close the session
0 commit comments