A SIP response to an INVITE request can be final or provisional. Final responses are
always sent reliably, but provisional responses typically are not. For cases where you need to send
a provisional response reliably, you can use the PRACK (Provisional response acknowledgment)
method.
Before you begin
To develop applications that support PRACK, the following criteria must be met:
- To indicate that the client supports PRACK, the client that sends the INVITE request must put a
100rel tag in the Supported or the Require header.
- The SIP servlet must respond by invoking the sendReliably() method instead of the send()
method.
About this task
PRACK is described in the following standards:
- RFC 3262 ("Reliability
of Provisional Responses in the Session Initiation Protocol (SIP)"), which extends RFC 3261 ("SIP: Session Initiation
Protocol"), adding PRACK and the option tag 100rel.
- Section 5.7.1 ("Reliable Provisional Responses") of JSR 289 ("SIP Servlet
Specification Version 1.1").
Procedure
- If you are developing an application that acts as a proxy, make your application generate and
send a reliable provisional response for any INVITE request that has no tag in the To field.
- If you are developing an application that acts as a user agent client (UAC), perform the
following actions:
- Make your application add the 100rel tag to outgoing INVITE requests. The option tag must appear
in either the Supported header or the Require header.
- To create a PRACK request and send the request to the user agent server (UAS), invoke the
createPrack() method on the incoming response within your application's doProvisionalResponse(...)
method. The container handles the RAck header as defined in JSR 289 Section 5.7.1.
- The application that acts as an UAC receives a final
2xx-6xx response on the PRACK, which the UAC can handle with a
doResponse() method.
- If you are developing an application that acts as a user agent server (UAS), perform the
following actions: