HP-UX C SIP Stack Programmer's Guide (Novembery 2007)
Working with Transactions 107
Transaction State Machine
While in this state, the transaction retransmits the request message according to
the rules defined in RFC 3261, and the value configured for T1. The
retransmissions take place only if the transport is an unreliable transport. If no
response is received when 64*T1 timer (Timer B according to RFC 3261)
expires, the transaction is terminated automatically and assumes the
TERMINATED state (in any transport).
RVSIP_TRANSC_STATE_CLIENT_INVITE_PROCEEDING
Upon receipt of the first provisional response by a client INVITE transaction,
the transaction assumes the CLIENT_INVITE_PROCEEDING state. When
entering this state, a transaction timer is set to provisionalTimer. When this
timer expires, the transaction is terminated if the
enableInviteProceedingTimeoutState configuration flag is set to RV_FALSE. If
the enableInviteProceedingTimeoutState flag is set to RV_TRUE, the
transaction will move to the CLIENT_INVITE_PROCEEDING_TIMEOUT
state. Receipt of a final response in the Proceeding state will move the
transaction to CLIENT_INVITE_FINAL_RESPONSE_RCVD state.
RVSIP_TRANSC_STATE_CLIENT_INVITE_PROCEEDING_TIMEOUT
This state is reached only if the enableInviteProceedingTimeoutState
configuration flag is set to RV_TRUE. Upon reaching timeout on the
CLIENT_INVITE_PROCEEDING state, the transaction assumes this state. In
this state, you have to decide whether to terminate the transaction or to cancel it.
If you decide to cancel the transaction, a CANCEL message is sent to the
destination. In this state, you have to decide on one of the two options, otherwise
the transaction will wait indefinitely.
RVSIP_TRANSC_STATE_CLIENT_INVITE_FINAL_RESPONSE_RCVD
Upon receipt of an INVITE final response, the transaction assumes the
CLIENT_ INVITE_FINAL_RESPONSE_RCVD state. If the response is a 2xx
response, the transaction will then assume the TERMINATED state. If the
response is a non-2xx response, the application should initiate the ACK request
by calling the RvSipTransactionAck() function. After sending the ACK, the
transaction will move to the CLIENT_INVITE_ACK_SENT state.