Skip to main content

Module dialog

Module dialog 

Source
Expand description

Dialogs (RFC 3261 §12).

A dialog is the shared state two user agents keep between an INVITE and a BYE. Getting it wrong produces calls that establish and then cannot be ended, which is worse than a call that never establishes: the media keeps flowing.

The three parts that matter, and the ways each goes wrong:

  • The identifier is Call-ID plus both tags. The local and remote tags swap places depending on which side you are, and a UAS that builds the identifier as though it were the UAC will fail to match its own dialog’s BYE.
  • The sequence numbers are independent. Each side numbers its own requests. Sharing one counter means the first in-dialog request from each side collides.
  • The route set is the Record-Route of the dialog-forming exchange, and it is reversed for a UAC. Sending in the wrong order routes a BYE through the proxies backwards, and it never arrives.

Structs§

Dialog
A dialog.
DialogId
What identifies a dialog. Call-ID plus the two tags.

Enums§

Role
Which side of the dialog this is.

Traits§

HasTag
Both To and From carry a tag, and both are needed from either side.