Property types in the range 0x4000-0x7FFF are designated as Mandatory Track Properties. These properties MUST have Track scope. Mandatory Track Properties have special handling rules that prevent tracks with required properties from being forwarded to or processed by endpoints that do not understand them.
An Object received with a Mandatory Track Property as an Object Property is malformed (see Section 12.1).
When an endpoint receives a Mandatory Track Property in PUBLISH, SUBSCRIBE_OK, or FETCH_OK that it does not understand, it MUST NOT process or forward that track:
-
For PUBLISH messages: the subscriber MUST respond with PUBLISH_ERROR with error code UNSUPPORTED_EXTENSION.
-
For SUBSCRIBE_OK messages: the subscriber MUST cancel the subscription (see Section 6.4.2.3). If the subscriber is a relay with pending downstream subscribers, it MUST send SUBSCRIBE_ERROR with error code UNSUPPORTED_EXTENSION to the downstream subscribers.
-
For FETCH_OK messages: the subscriber MUST cancel the fetch (see Section 6.4.2.3). If the subscriber is a relay and has not yet sent a FETCH_OK or FETCH_ERROR downstream, it MUST send FETCH_ERROR with error code UNSUPPORTED_EXTENSION to the downstream fetch requester. If the relay has already forwarded data on a fetch stream, it MUST reset the stream.
A publisher that knows a subscriber does not support a Mandatory Track Property SHOULD take the following action:
-
For SUBSCRIBE: respond with SUBSCRIBE_ERROR with error code UNSUPPORTED_EXTENSION.
-
For FETCH: respond with FETCH_ERROR with error code UNSUPPORTED_EXTENSION.
-
For PUBLISH: do not publish the track to that subscriber.