HP-UX C SIP Stack Programmer's Guide (Novembery 2007)
Advanced Features 381
SIP Session Timer
RvSipCallLegSessionTimerRefreshAlertEv()
Notifies that the alert time (the time in which the application needs to send a re-
INVITE or UPDATE to refresh the call) is expired. The application needs to
send a refresh using the RvSipCallLegSessionTimeRefresh() or
RvSipCallLegTranscSessionTimerGeneralRefresh() functions. (This callback is
called only on the refresher side).
RvSipCallLegSessionTimerNotificationEv()
Notifies the application about events that are related to the Session Timer
feature. Note the following:
When the callback is called with the
RVSIP_CALL_LEG_SESSION_TIMER_SESSION_
EXPIRES reason, it notifies the application that the session
time is about to expire. It is the responsibility of the application
to decide whether to send BYE or to do something else.
When the callback is called with the
RVSIP_CALL_LEG_SESSION_TIMER_NOTIFY_
REASON_422_RECEIVED reason, it notifies the application
that a 422 response was received over the current call-leg.
According to RFC 4028 section 7.3, in order to retry the Session
Timer mechanism a new request has to be sent with same Call-
ID, To, and From of the previous request, but the CSeq should
contain a new sequence number that is one higher than the
previously rejected request. Thus, in order to retry the
mechanism, a new call-leg should be created using
RvSipCallLegMgrCreateCallLeg(). Moreover, this new call-
leg details has to be set by the various API functions of the
SIP Stack, such as RvSipCallLegSetFromHeader(),
RvSipCallLegSetCSeq(), RvSipCallLegSetCallId() and so on,
according to the rejected call-leg.
Note: The newly created call-leg cannot be connected until the
original, rejected call-leg is completely terminated.
RvSipCallLegSessionTimeNegotiationFaultEv()
Notifies the application about negotiation problems while defining the Session
Timer parameters for a call.