Skip to main content

Module push

Module push 

Source
Expand description

Being reachable through a push notification (RFC 8599), from the user agent’s side.

The client this is for holds no connection at all: no socket, no keep-alive, and quite possibly not running. Every other mechanism in this crate assumes there is something the registrar can route down — Outbound keeps a flow open, GRUU names the instance at the end of one. RFC 8599 is what is left when there is nothing: the proxy leaves SIP for one hop, asks the client’s push notification service to wake it, and the client goes and gets a flow.

Three things are worth knowing before reading on.

  • The push is not the call. §4.1.3: “When a UA receives a push notification, the UA MUST send a binding-refresh REGISTER request.” The notification is permission to go and get a flow; the request it was sent for arrives down that flow afterwards. A client that waits for the INVITE instead of refreshing is waiting on a path that does not exist yet — which is why the ordering is a type here (Pending) rather than a comment.
  • sipx ships no push service. PushService is a trait and this repository implements it nowhere. sipx is a stack, not a client of anybody’s push transport, and the non-goals in docs/vision.md rule out the alternative. What sipx owes is the SIP half: the parameters, the option negotiation, 555, and the refresh ordering.
  • The proxy half is not here. §5.6 has a proxy hold the request in a bucket while the client wakes, and §4.2’s registrar behaviour mints the PURR. Both are roles sipx does not play, and neither shares anything with this but the wire format.

Structs§

Pending
Permission to expect the request a push notification was sent for (§4.1.3).
Support
What a registrar said about push, read from the Feature-Caps of a REGISTER response (§8.2).

Constants§

NOT_SUPPORTED
555 (Push Notification Service Not Supported), registered in §8.1.
NOT_SUPPORTED_REASON
The reason phrase §8.1 registers alongside NOT_SUPPORTED.

Traits§

PushService
The push notification service a device can be woken through (§3).

Functions§

in_contact
Put the push parameters into a contact’s URI (§4.1.2).