Expand description
ICE in SDP: the attributes RFC 8839 §5 defines.
This is the signalling half of ICE and nothing else. The agent, the connectivity checks and
the sockets live in sipx-media; what belongs here is the grammar, because it is pure
parsing — no clock, no socket, no runtime — and because the rest of ICE should reason about a
typed description rather than search an SDP body for substrings.
Two rules run through the whole module, and both exist because the alternative breaks calls with peers that are behaving perfectly legally.
A line sipx cannot use is ignored, not fatal. RFC 8839 §5.1’s connection-address admits
an FQDN and its transport admits any token, so a description may carry candidates sipx has
no way to check. The candidate is dropped and the description survives. A parser that fails
the whole body on one such line refuses a call over a candidate it was never asked to use.
A priority is range-checked on parse. The grammar is 1*10DIGIT, so 4294967295 is
well-formed text, but §5.1 bounds the value at 2^31 − 1. RFC 8445 §6.1.2.3 then combines two
priorities as 2^32*MIN(G,D) + 2*MAX(G,D) + (G>D?1:0), and that expression leaves u64 for
operands near u32::MAX — 4294967295 on both sides is the case that overflows, which is
exactly the value the grammar admits and the range forbids. Checking on parse is what keeps
the value that would wrap from ever reaching the arithmetic; see Priority for the
headroom the bound actually buys, and docs/specs/ice.md §4 and §6.2.
Structs§
- Candidate
- One
a=candidateline (RFC 8839 §5.1). Media-level. - Component
Id - Which component of a media stream a candidate is for (RFC 8839 §5.1).
- Credentials
- The short-term credentials for a stream:
ice-ufragandice-pwd(RFC 8839 §5.4). - Foundation
- A candidate foundation:
1*32ice-char(RFC 8839 §5.1). - Pacing
- The
a=ice-pacingvalue: the Ta interval an agent wants, in milliseconds (RFC 8839 §5.5). Session-level. - Priority
- A candidate priority: a positive integer up to 2^31 − 1 (RFC 8839 §5.1).
- Related
Address - The
raddr/rportpair a candidate may carry (RFC 8839 §5.1). - Remote
Candidate - One entry of an
a=remote-candidatesline (RFC 8839 §5.2). Media-level.
Enums§
- Candidate
Type - How a candidate was obtained (RFC 8839 §5.1, RFC 8445 §5.1.1).
- Transport
- The transport a candidate names.
Constants§
- ICE2
- The
ice2option tag every RFC 8839 agent must advertise (§5.6).