UAS Prack Announcement page

From reSIProcate
Jump to: navigation, search

Hello Fellow reSIPers,

I am happy to announce that resiprocate/dum now fully supports RFC3262 PRACK. This will offcially appear in the 1.9 release when it is made available. Resiprocate has supported playing the UAC role (PRACK sender) in a PRACK enabled call for some time now, but it did not previously support the UAS role (reliable provisional sender).

To enable UAS Prack support use the following MasterProfile setting:

     // UAS PRACK support.  UPDATE must be enabled(currently defaults to on, do
     // not disable w/out disabling UAS PRACK support).
     // All flows and limitations mentioned in UAC Prack comments apply
     // Modes work as follows:
     // SupportedEssential - Only send reliable provisionals if sending a body and far end supports
     // Supported - Always send reliable provisionals if far end supports
     // Required - Always send reliable provisionals
     virtual void setUasReliableProvisionalMode(ReliableProvisionalMode mode);

There is also a new optional InviteSessionHandler callback called onPrack if you would like to inspect the Prack messages that are received.

     /// called when PRACK is received for a reliable provisional answer (UAS)
     virtual void onPrack(ServerInviteSessionHandle, const SipMessage &msg);

And a new profile setting to control how often reliable provisionals are repeated/resubmitted if the application doesn't send another provisional or answer the call:

     /// The amount of time that can pass before dum will resubmit a reliable provisional response
     virtual void set1xxRelResubmitTime(int secs);
     virtual int get1xxRelResubmitTime() const;
     virtual void unset1xxRelResubmitTime();

The resip/dum/doc directory contains a few new documents surrounding PRACK support:

All offer/answer scenarios from PRACK RFC3262 and the UPDATE RFC3311 are supported. Sending of overlapped reliable provisionals are not allowed. The only odd scenario worth mentioning is the ability to send an Offer in a PRACK request after receiving an answer in a reliable provisional. In order to be able to do this the caller must call provideOffer from the onAnswer callback. If provideOffer is called later in time, then the PRACK will go out without the offer and an UPDATE request will carry the offer instead.

The TFM DUM Automated test framework has been extended to support a total of 33 automated PRACK test cases and scenarios.

Best Regards,
Scott Godin
SIP Spectrum, Inc.