Thanks Ankur and Olle

Now its more clear to me. The transaction/transport layer is responsible for 
retransmitting the first issued PRACK until it has received a 200 OK for that 
PRACK. The application should ignore retransmitted provisional responses, since 
the first PRACK will be retransmitted until 200 OK is received (and by that 
time there will be no more retransmissions of the provisional response.

Regards,
// Andreas


From: ankur bansal [mailto:abh.an...@gmail.com]
Sent: den 11 februari 2014 09:50
To: Olle E. Johansson
Cc: Andreas Byström (Polystar); sip-implementors@lists.cs.columbia.edu
Subject: Re: [Sip-implementors] Double checking the behavior of PRACK

The statement mentioned in RFC :
      In particular, a UAC SHOULD NOT retransmit the PRACK request
      when it receives a retransmission of the provisional response being
       acknowledged, although doing so does not create a protocol error.

This suggests that PRACK is different from ACK as
             PRACK is any other non-INVITE request which should be not sent on 
getting prov response retransmission
             ACK is special request that being sent on getting final response 
retransmission.

And coming to your question of PRACK being lost and not recieved by UAS , then 
UAC will also not get 200 ok for PRACK so it would be retransmitted in regular 
intervals as per sip timers .And one of the retransmitted PRACK would reach UAS 
if network itself not down .If UAS never get PRACK then UAC side ,PRACK 
transaction will timeout .

So bottomline is that UAC dont need to retransmit PRACK for prov response 
retransmission ,as UAC will be doing it anyway as per normal sip timers.


Thanks & regards
Ankur Bansal

On Tue, Feb 11, 2014 at 1:11 PM, Olle E. Johansson 
<o...@edvina.net<mailto:o...@edvina.net>> wrote:

On 11 Feb 2014, at 08:30, Andreas Byström (Polystar) 
<andreas.byst...@polystar.com<mailto:andreas.byst...@polystar.com>> wrote:

> Hi
>
> RFC3262 says the following about UAC:
>
> "Note that the PRACK is like any other non-INVITE request within a
>   dialog.  In particular, a UAC SHOULD NOT retransmit the PRACK request
>   when it receives a retransmission of the provisional response being
>   acknowledged, although doing so does not create a protocol error.
>
>   Once a reliable provisional response is received, retransmissions of
>   that response MUST be discarded.  A response is a retransmission when
>   its dialog ID, CSeq, and RSeq match the original response.  The UAC
>   MUST maintain a sequence number that indicates the most recently
>   received in-order reliable provisional response for the initial
>   request.  This sequence number MUST be maintained until a final
>   response is received for the initial request.  Its value MUST be
>   initialized to the RSeq header field in the first reliable
>   provisional response received for the initial request.
>
>   Handling of subsequent reliable provisional responses for the same
>   initial request follows the same rules as above, with the following
>   difference: reliable provisional responses are guaranteed to be in
>   order.  As a result, if the UAC receives another reliable provisional
>   response to the same request, and its RSeq value is not one higher
>   than the value of the sequence number, that response MUST NOT be
>   acknowledged with a PRACK, and MUST NOT be processed further by the
>   UAC.  An implementation MAY discard the response, or MAY cache the
>   response in the hopes of receiving the missing responses.
> "
>
> I interpret this as if the UAC receives a retransmitted reliable response it 
> should NOT send the PRACK again. If this is true, it means that if the first 
> PRACK is lost, the UAS will never receive it?
The PRACK behaves like any other non-INVITE request. It is retransmitted by 
itself until timers expire or you get an answer.

The text here states - in my opinion - that it is a standalone transaction, you 
should not retransmit PRACK if you get a retransmit of the 1xx message that 
caused it.

/Olle
_______________________________________________
Sip-implementors mailing list
Sip-implementors@lists.cs.columbia.edu<mailto:Sip-implementors@lists.cs.columbia.edu>
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

_______________________________________________
Sip-implementors mailing list
Sip-implementors@lists.cs.columbia.edu
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to