Subject: [SIP] Cancel of Invite and affect (if any) on prack and reliable provisional responses

From: Doug Hurtig <[email-masked]>
Date: Thu, 15 Feb 2001 15:51:12 -0600

Hi,

I have a question related to what should the UAC and UAS
do with outstanding

PRACK requests and reliable provisional responses when the
associated INVITE

is canceled?

UAC
UAS

INVITE -------------------------->

<--------------------------
100 provisional response

<--------------------------
18x reliable provisional response

PRACK  ------------> lost

CANCEL -------------------------->

At this point the UAC is waiting the 200 OK for CANCEL and
will resend

PRACK on time-out. UAS is awaiting PRACK for 18x and will
resend 18x on

time-out.

Should UAC abort the PRACK or let it continue?

UAS must send the 200 OK for the CANCEL and should send a
487 response

for the INVITE. Should the UAS abort the timer associated
with any active

18x response? That is, stop waiting for the PRACK.

--

Regards,

Doug Hurtig

Tekelec

2425 N. Central Expressway

Richardson, Texas 75080

[email-masked]

972.301.1203

_______________________________________________
This list is for continuing development of the SIP protocol.
The sip-implementer's list is the place to discuss implementation,
and to receive advice on understanding existing sip.
To subscribe to it, send mail to [email-masked] with
"subscribe sip-implementors" in the body.

---

From: Christer Holmberg <[email-masked]>
Date: Fri, 16 Feb 2001 00:11:34 +0200

Hi,

>Hi,
> 
>I have a question related to what should the UAC and UAS do with
>outstanding PRACK requests and reliable provisional responses when the
>associated INVITE is canceled?
> 
>     UAC                               UAS
> 
>            <-------------------------- 100 provisional response
>            <-------------------------- 18x reliable provisional
> response
> 
>     PRACK  ------------> lost
> 
>At this point the UAC is waiting the 200 OK for CANCEL and will
>resend PRACK on time-out. UAS is awaiting PRACK for 18x and will resend 18x
>on time-out.
> 

I see no reason why you would keep the PRACK alive, since you have
canceled your setup request. The problem is that if you simply kill your
transaction the UAS is going to re-transmit the 18x response until
timeout. One answer would be to also CANCEL to PRACK, but that is
related to the issue about if CANCEL is allowed for other requests than
INVITE...

Also, you have a similar case if you receive the final respones to your
INVITE while you still have ongoing PRACK transactions. Why would you
then want to keep the PRACK transactions alive, since you (the UAC)
KNOWS you have received the provisional responses (otherwise you would
never have started the PRACK transaction), and you already have received
the final response? I think that CANCEL should be used here.

Also (I have a number of issues on PRACK :), what should the UAS do, if
it get triggered to send a final response to the INVITE it received, but
it is still sending 18x provisional responses it hasn't received a PRACK
for? Maybe this is more an implementation issue, but I wanted to point
it out.
 
>UAS must send the 200 OK for the CANCEL and should send a 487
>response for the INVITE. Should the UAS abort the timer associated with any
>active 18x response? That is, stop waiting for the PRACK.

This is also an issue. It is related to what I just wrote, but the
difference is that now the UAS hasn't received a CANCEL, but it has
still sent the final response to the INVITE.

My personal opinion about PRACK is that it is a little weird to spend
more resources to ack provisional responses, (PRACK request + response)
than to ack the final response (only an ACK request), but I guess that
is not related to your question, so... :)

Regards,

Christer Holmberg
Ericsson Finland

>   _______________________________________________ This list is for
> continuing development of the SIP protocol. The sip-implementer's list
> is the place to discuss implementation, and to receive advice on
> understanding existing sip. To subscribe to it, send mail to
> [email-masked] with "subscribe sip-implementors" in the
> body.

---

From: Doug Hurtig <[email-masked]>
Date: Thu, 15 Feb 2001 16:40:32 -0600

Christer,

  Thanks for the response.

> related to the issue about if CANCEL is allowed for other requests than

  I agree with you. However, the 100Rel draft states that CANCEL of
  PRACK is not valid.

> the final response? I think that CANCEL should be used here.

 You are correct in that it does not seem to be the best use of resources to keep
  the PRACK's going. However,  since CANCEL is not allowed can I assume that
  server will stop 18x retransmission at this point? May need to allow PRACKs to
  complete.

> for? Maybe this is more an implementation issue, but I wanted to point

   Given the way the 100rel draft is currently written I suspect that you
  need to allow the PRACKs to continue.

   The 100rel draft does recommend that the UAS not send the next provisional
   response until it the previous one is acknowledged.  If this is the case, then
   you could drop unsent provisional responses at the UAS if it was determined
  that a final response was to be sent. This works if media is sent in first
  provisional response or in the final response. If however, media could be
  in one of the dropped provisional responses you could have a problem.

> (See attached file: christer.holmberg.vcf)
> (See attached file: InterScan_Disclaimer.txt)
>
>   --------------------------------------------------------------------------------
>                                Name: InterScan_Disclaimer.txt
>    InterScan_Disclaimer.txt    Type: Plain Text (text/plain)
>                            Encoding: base64

--
Regards,
Doug Hurtig

Tekelec

[email-masked]
972.301.1203

---

From: Christer Holmberg <[email-masked]>
Date: Fri, 16 Feb 2001 00:51:44 +0200

Hi,

>  Thanks for the response.

No problemo :) Please let us know if you have a good solution for this,
or a proposal how you think it should be solved.

Regards,

Christer Holmberg
Ericsson Finland