Subject: [Sip] SDP in 200 with PRACK

From: Christer Holmberg <[email-masked]>
Date: Thu, 06 Jun 2002 09:18:01 +0300

Hi,

The following has been discussed before, but I haven't found any
clarification for it in the bis- or PRACK draft:

Chapter 13.2.1 is bis says:

"If the initial offer is in an INVITE, the answer MUST be in a
reliable non-failure message from UAS back to UAC which is
correlated to that INVITE. For this specification, that is
only the final 2xx response to that INVITE. That same exact
answer MAY also be placed in any provisional responses sent
prior to the answer. The UAC MUST treat the first session
description it receives as the answer, and MUST ignore any
session descriptions in subsequent responses to the initial
INVITE."

Now, if PRACK is used, the first reliable non-failure message from the
UAS may be a 18x provisional response, so the UAS may include an answer
in such a message.

My question is: does this still require that the answer which was sent
in the 18x must also be included in the 200? My understanding is that
bis-09 does not say that, only that the answer must be in the first
reliable non-failure message (which, for a pure bis-09 implementation
happen to be the 200 response).

I know there has been talks about backward compability issues etc, but I
couldn't find it written anyware.

Regards,

Christer Holmberg
Ericsson Finland

_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip

---

From: Jonathan Rosenberg <[email-masked]>
Date: Thu, 06 Jun 2002 15:37:49 -0400

> UAS may be a 18x provisional response, so the UAS may include an answer

Right.

> in the 18x must also be included in the 200? 

No. The above text is mostly referring to the non-100rel case only. 
There, the first reliable response is the 2xx.

-Jonathan R.

-- 
Jonathan D. Rosenberg, Ph.D.            72 Eagle Rock Avenue
Chief Scientist                         First Floor
dynamicsoft                             East Hanover, NJ 07936
[email-masked]                 FAX: (973) 952-5050
http://www.jdrosen.net                  PH:  (973) 952-5000
http://www.dynamicsoft.com

---

From: Christer Holmberg <[email-masked]>
Date: Fri, 07 Jun 2002 07:55:23 +0300

Hi,

Thanks for the comment!

So, I guess I also can assume the following:

There is no offer in the INVITE, so the offer from the UAS comes in the first
reliable provisional response, and the answer to that comes in the PRACK.
Now, in this case the offer is NOT needed in the 200, and the answer is NOT
needed in the ACK (which is the case for a non-PRACK implementation). Right?

A couple of other questions related to this:

Q1: Bis-09 says that after the UAC has received an answer to an offer, it may
generate subsequent offers in requests. The PRACK draft doesn't say anything
about this, so from a protocol point of view I assume there could be a new
offer in every PRACK? However, I think there was once a discussion if that
really should be allowed, so...

Q2: Bis-09 says that once the UAS has sent or received an answer to the
initial offer, it must not generate subsequent offers in any responses to the
initial INVITE.

However, bis-09, nor the PRACK draft, says anything about if the UAS is
allowed to send a new offer in a reliable 18x, within the INVITE transaction,
if it has received (in a PRACK) an answer to a previous offer.

Regards,

Christer Holmberg
Ericsson Finland

Q3: A "cosmetic" question

"The UAC MUST treat the first session description it receives as the answer,
and MUST ignore any
session descriptions in subsequent responses to the initial INVITE."

Should it be mentioned that this is per early dialog? An INVITE may be
forked, so the UAC may receive multiple different session descriptions, so
there is nothing saying that the first session description is going to be the
one which finally be used (ie will be included in the 200).

Regards,

Christer Holmberg
Ericsson Finland

---

From: Jonathan Rosenberg <[email-masked]>
Date: Wed, 19 Jun 2002 02:35:53 -0400

Right.

> really should be allowed, so...

There can only be an offer in the first PRACK, based on the rules in 
100rel. According to 100rel:

    If the UAC receives
    a reliable provisional response with an answer, it MAY generate an
    additional offer in the PRACK.

But, you can only get one reliable provisional response with an answer 
(when the INVITE had the offer), so its a one time deal.

bis means to say that there can be offers in subsequent requests, based 
on rules defined for that request method.

> if it has received (in a PRACK) an answer to a previous offer.

Sure it says something. It says if cannot generate subsequent offers in 
any responses to the initial INVITE, period. That would include reliable 
18x.

> one which finally be used (ie will be included in the 200).

Generally, the O/A exchange is per dialog. That could be made clearer.

All of this is actually quite complicated. This is on my list to 
"simplify for draft standard".

-Jonathan R.

---

From: Christer Holmberg <[email-masked]>
Date: Wed, 19 Jun 2002 12:51:13 +0300

Hi,

A couple of issues in this thread, are related to the thread on 180 and
Ringback generation, so I'll bring them up here too.

> >Q1: Bis-09 says that after the UAC has received an answer to an offer,
> >it may generate subsequent offers in requests. The PRACK draft doesn't say
>
> >anything about this, so from a protocol point of view I assume there could
> be a
> >new offer in every PRACK? However, I think there was once a discussion if
> >that really should be allowed, so...
>

The rule also say that the session description in the PRACK should not affect
the response code of the PRACK (ie if the reliability function of the PRACK
is ok we return 200 - no matter if the session description is accepted by the
application or not). Also, the rule says that, if the PRACK contained an
offer, the response must contain the answer.

Now, if we DO receive a subsequent PRACK with SDP (which is not allowed) we
will still return 200. But: do we also include an SDP, ie with the ports set
to zero, or can we leave the message body empty? I guess this is an
implementation issue, but it would be nice to hear some oppinions on it (I
know we have discussed the issue of allowing SDPs in PRACKs in the first
place before, so we don't have to bring that discussion up again).

> (when the INVITE had the offer), so its a one time deal.

The UAS MAY send the SAME SDP in subsequent provisional responses (and in the
final response), eg in a 180 for the ringback generation purpose, but that
has of course nothing to do with the answer/offer mechanism.

> >initial offer, it must not generate subsequent offers in any responses
> >to the initial INVITE.
> >
> >"The UAC MUST treat the first session description it receives as the
> >answer, and MUST ignore any session descriptions in subsequent responses
> to the initial INVITE."
> >
> >forked, so the UAC may receive multiple different session descriptions,
> >so there is nothing saying that the first session description is going to
> >be the one which finally be used (ie will be included in the 200).
>

The "MUST ignore any session description in subsequent responses" statement
is only related to the answer/offer mechanism. Again, there may be 180 with
session descriptions for the ringback tone generation purpose.

Regards,

Christer Holmberg
Ericsson Finland