HP-UX C SIP Stack Programmer's Guide (Novembery 2007)

Working with Transactions 119
Transaction Manager API
RvSipTranscMgrCreateServerTransactionFromMsg()
Creates a new Server transaction from a request message. This function will be
used by stateless proxy applications. A stateless proxy does not open a
transaction for incoming requests. However, according to RFC 3261, if a
stateless proxy wishes to reject a request, it needs to handle this request in a
stateful manner. For this, the stateless proxy needs to instruct the SIP Stack to
open a server transaction from the request message. If the message method is
INVITE, the new transaction will assume the
SERVER_INVITE_REQUEST_RCVD state. If the message method is
CANCEL, the new transaction will assume the
SERVER_CANCEL_REQUEST_RCVD state. Otherwise the new transaction
will assume the SERVER_GEN_REQUEST_RCVD state.
TRANSACTION
MANAGER EVENTS
The TransactionMgr informs the application of events that are not related to a
specific transaction. The following TransactionMgr events are available:
RvSipTranscMgrOutOfContextMsgRcvdEv()
This event is called when the TransactionMgr receives a message that does not
match any existing transaction. The callback is called in the following cases:
For a response message that does not match any client
transaction.
When ACK for a 2xx response is received.
When CANCEL is received and the cancelled transaction is not
found.
When the application acts as a user agent (UA) it will be notified only of ACK,
1xx and 2xx responses for INVITE. When the application is a proxy, it will get
all the above notifications. The proxy needs decide whether to ignore the
message or to proxy it to the destination in a stateless manner using the
Transmitter API.
RvSipTranscMgrNewRequestRcvdEv()
This event is called when the TransactionMgr receives a new request that is not
a retransmission and not an ACK request. The application should instruct the
Stack whether or not it should create a new transaction for the request. If the
application decides not to create a new transaction for the request,
RvSipTranscMgrOutOfContextMsgRcvdEv() will be called. If you do not
implement this callback, a new transaction will be created by default. This
callback is usually used by stateless proxies.