Skip to main content

Module gruu

Module gruu 

Source
Expand description

GRUUs: obtaining them from a registrar, and choosing which one to use (RFC 5627).

A registration says “this user is reachable here”. A GRUU says “this device is reachable here”, which is a different claim and the one a transfer, a conference invitation or a callback needs: an address of record resolves to every phone the user has registered, and a request routed to all of them is not a request routed back to the one that was talking.

sipx obtains and uses GRUUs. Minting them is §5’s registrar behaviour and is not here — sipx is not a registrar, and the two halves share nothing but the wire format.

Three things are worth knowing before reading on:

  • The instance ID is the same one Outbound registers with. §4.1 identifies the instance with the +sip.instance media feature tag that RFC 5626 §4.1 also defines. Two mechanisms, one identity — Registration holds it in a single field so that they cannot come to hold two, which is a fault that only appears under a registrar that correlates them.
  • The two GRUUs are not interchangeable. See Kind. Substituting one for the other silently is the failure this module goes out of its way not to have.
  • Recognising one needs more than URI equality. §5.4: “A public GRUU will always be equivalent to the AOR based on URI equality rules.” The comparison that does not make that mistake is [sipx_sip::gruu::addressed_to].

Structs§

Gruus
The GRUUs a registrar issued for one instance’s binding (§4.2, §5.2).

Enums§

Kind
Which of the two GRUUs a UA puts in a Contact (§4.4).

Constants§

OPTION_TAG
The option tag a UA offers to ask for a GRUU.