Transport stanza¶
Signalling - call-transport
SIG-05 - status: review - audio, video
The
Wire format. Send a top-level <call to="<peer>"> wrapping a <transport>
action child:
<call to="<peer>">
<transport call-id="<call-id>" call-creator="<creator-jid>"
[p2p-cand-round="<n>"]
[transport-message-type="<t>"]>
[ <te priority="1">…relay-token-bytes…</te> ]
<net medium="2" [protocol="0"]/>
</transport>
</call>
Identity (both required, echoed unchanged from the offer):
- call-id MUST equal the offer's call-id.
- call-creator MUST identify the call creator.
Children and order:
- The action MUST contain a <net> child.
- When a relay token is conveyed, a <te priority="1"> child (binary body =
relay token blob) MUST precede <net>.
- When no relay token is conveyed, <te> is omitted and <net> is the sole child.
<net> attributes:
- MUST carry medium="2".
- MUST carry protocol="0" unless transport-message-type="9"; when
transport-message-type="9", protocol MUST be omitted.
transport-message-type (optional) selects the exchange role:
"1" relay candidate
"3" peer (ICE) candidate ; callee replies with type "9"
"9" keepalive / reply ; <net> omits protocol
p2p-cand-round (optional): round number as a decimal string for round-based
peer-to-peer candidate exchange.
Receiver: MUST read call-id and call-creator; MAY read p2p-cand-round
and transport-message-type. A receiver that does not recognise the action
MUST ignore the stanza rather than fail the call (forward-compatibility for
future transport-message-type values).
Notes. The same <te> relay-token carrier appears in the accept (priority="2") and
relaylatency exchanges, indicating a shared relay-token element across call actions.
Requires: call-offer, stun-relay
Breakdown: media-loop, call-mute, flow-outgoing-1to1
Implemented by
| Flavor | Status | Source | Notes |
|---|---|---|---|
whatsapp-rust |
working | history - blame - commits 674e851 |
— |
zapo-caller |
working | — | — |
Annotation wacrg:SIG-05 — a flavor marks its implementation site in source with this comment; a script clones the source, finds it, and attaches the commit blame/permalink.
Contributors
| Contributor | Role |
|---|---|
| wrote initial spec |
protocol history / diff - blame
Open questions
- Exact internal structure of the
References - RFC 8445 — Interactive Connectivity Establishment (ICE) - RFC 7675 — STUN Usage for Consent Freshness
Changelog¶
- 2026-06-21 — Initial spec entry.