HP-UX C SIP Stack Programmer's Guide (Novembery 2007)
Working with Transactions 113
Transaction State Machine
CLIENT CANCEL
T
RANSACTION
A transaction may assume any of the following states in the Client CANCEL
state machine:
RVSIP_TRANSC_STATE_CLIENT_CANCEL_SENT
When calling the RvSipTransactionCancel() function, a new Client CANCEL
transaction is created and a CANCEL request is sent. The client CANCEL
transaction assumes the CLIENT_CANCEL_SENT state. The transaction
retransmits the CANCEL message according to the rules defined in RFC 3261,
and the values configured for T1, T2 and generalRequestTimeoutTimer (timer
F). The retransmissions take place only if the transport is an unreliable transport.
If no response is received when generalRequestTimeoutTimer is expired, the
transaction is terminated and assumes the TERMINATED state automatically
(in any transport). Receipt of a 1xx response message moves the transaction to
the CLIENT_CANCEL_PROCEEDING state. Receipt of a final response (2xx-
6xx) moves the transaction to the
CLIENT_CANCEL_FINAL_RESPONSE_RCVD state.
RVSIP_TRANSC_STATE_CLIENT_CANCEL_PROCEEDING
Upon receipt of a provisional response by a client CANCEL transaction, the
transaction assumes the CLIENT_CANCEL_PROCEEDING state. The
transaction will continue to retransmit the request message until
generalRequestTimeoutTimer expires, using a consistent interval of T2 seconds
as defined in RFC 3261 (Only if the transport is unreliable). Receipt of a final
response will move the transaction to the
CLIENT_CANCEL_FINAL_RESPONSE_RECEIVED state.
RVSIP_TRANSC_STATE_CLIENT_CANCEL_FINAL_RESPONSE_RCVD
When entering this state, a transaction timer is set to T4 if the transport is an
unreliable transport. When this timer expires, the transaction will terminate and
assume the TERMINATED state. If the transport is a reliable transport, the
transaction will terminate and assume the TERMINATED state immediately
when it reaches this state. (Timer J as defined in RFC 3261).