Ivan Dubrov
Ivan Dubrov

Reputation: 4788

SIP (RFC 3261) server transactions timeout

According to the RFC 3261, there is no timeout for server transactions in PROCEEDING or TRYING states. As I understand, that means that TU MUST send response to the transaction. However, if TU fails, there should be a way for transaction to know about that and terminate.

Which behavior is correct according to the RFC 3261?

  1. Should server transaction detect TU failure?

  2. Should I add my own timeout? Assuming that client transaction on the other side will time-out anyway, it should be safe to terminate server transaction after some timeout > expected client transaction timeout.

  3. Any other behavior?

Upvotes: 1

Views: 2377

Answers (1)

Frank Shearar
Frank Shearar

Reputation: 17132

The timeouts in the transactions are to handle remote failures - network partitions, the remote machine falling over, etc.

SIP doesn't tell you what to do in the event of a local failure, like your Transaction-User layer falling over.

Your TU's the "brain" of the entire SIP stack, so if it fails, your SIP stack fails as a whole. I don't think it's sensible for the transaction layer to attempt to continue functioning.

Some transactions might meaningfully persist across your application reboot - presence subscriptions, say - while others like calls probably can't. You might store the state of these "persistable" transactions on disk, and restore them after you restart your application.

Upvotes: 2

Related Questions