fn check_track_extension_values(
extensions: &[KeyValuePair],
) -> Result<(), CodecError>Expand description
Refuse a Track Extension whose value falls outside the range its type allows, wherever in the run it is carried.
Extension headers only. The Message Parameter registry is a separate namespace that gives the same numbers to different types — 0x22 is GROUP_ORDER there and DEFAULT_PUBLISHER_GROUP_ORDER here — so the two lists are checked against their own tables and neither table is consulted for the other’s types.
§Inside Immutable Extensions as well as beside them
The run is walked one level down through Immutable Extensions, whose contents Section 11.2 defines as extension headers themselves. A rule applied only to the outer run is a rule a peer opts out of by moving one pair inside the block, and the block is not an obscure corner: it is where an Original Publisher puts anything a relay must not rewrite, which is exactly where a track’s group order and dynamic-group support belong.
Bytes under 0xB that do not parse as a Key-Value-Pair run are left alone rather than refused. Section 11.2 answers that with “A Track is considered malformed”, which Section 2.4.2 does not make a session close, and turning it into one here would end sessions over a rule the draft answers otherwise. A nested block that does parse is checked; one that does not is carried, and the caller still has the bytes.