Skip to main content

Module ice

Module ice 

Source
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::MAX4294967295 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=candidate line (RFC 8839 §5.1). Media-level.
ComponentId
Which component of a media stream a candidate is for (RFC 8839 §5.1).
Credentials
The short-term credentials for a stream: ice-ufrag and ice-pwd (RFC 8839 §5.4).
Foundation
A candidate foundation: 1*32ice-char (RFC 8839 §5.1).
Pacing
The a=ice-pacing value: 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).
RelatedAddress
The raddr/rport pair a candidate may carry (RFC 8839 §5.1).
RemoteCandidate
One entry of an a=remote-candidates line (RFC 8839 §5.2). Media-level.

Enums§

CandidateType
How a candidate was obtained (RFC 8839 §5.1, RFC 8445 §5.1.1).
Transport
The transport a candidate names.

Constants§

ICE2
The ice2 option tag every RFC 8839 agent must advertise (§5.6).