Here are some comments on this I-D.  I don't think that any of them
modify our understanding of the proposal.  I guess this is very terse;
please use these suggestions as you see fit.

* Abstract

Clarify:

   This specification defines a new SIP response code, 199 Early
   Dialog Terminated, which a SIP entity can use to indicate upstream
   that an early dialog has been terminated.  The response code can be
   used by a SIP entity (a SIP proxy or UAS), to inform the UAC that
   an early dialog has been terminated.  As the 199 response is a
   provisional response, often the UAC will receive it before
   receiving a final response to its request.

* Section 1

   When a forking proxy receives a non-2xx final response, it does not
   always immediately forward the response upstream towards the sender
   of the associated request.  Instead, the forking proxy "stores" it
   and waits for further final responses from remote destinations where
   the forked request was forwarded.

The text does not allow for serial forking, only parallel forking,
which might be confusing to people who are more aware of serial
forking.  So amend the last sentence to:

   Instead, the forking proxy "stores" it and waits for further final
   responses from remote destinations where the forked request was
   forwarded, and possibly forwards the request to additional
   destinations.

Also, Avoid using "..." except when indicating that the word is used
in a non-standard way or that one is discussing the word itself:

   Instead, the forking proxy "stores" it [...]

should be:

   Instead, the forking proxy stores it [...]

* Section 3.

   REQ 1: It must be possible to indicate to the UAC that an early
   dialog has been terminated before a final response is sent.

Oddly, though everyone thinks they understand this sentence, it
doesn't really say what we want.  To really ensure that the UAC
understands the early dialog has been terminated before the UAS sends
a final response, the UAS would have to send 199 *and get the PRACK
saying that it was received* before sending a final response.  This may
well be worse than the present state of affairs.

What we really mean is:

   REQ 1: It must be possible for a UAS or proxy to send an indication
   to the UAC that an early dialog has been terminated, which
   indication will not be delayed waiting for a final response from
   any UAS.

* Section 4

   When a client receives a 199 Early Dialog Terminated provisional
   response it MAY release resources and procedures associated with the
   early dialog the 199 response is received on.

Amend to clarify the meaning of 199 independently of the consequences
of that meaning:

   When a client receives a 199 Early Dialog Terminated provisional
   response, it has positive knowledge that the UAS that created the
   early dialog has terminated it, and so the client MAY release
   resources and procedures associated with the early dialog for which
   the 199 response is received.

* Section 4

Add this paragraph before the last paragraph:

   A UAC that receives a 199 response for an early dialog MUST NOT
   send any further requests on that dialog, except for a PRACK if the
   199 response was sent reliably, and PRACKs for other reliable
   provisional responses that are to be acknowledged.

This is copied from section 7 (Backward Compatibility), but since it
is a constraint on UACs, it should also be stated in this section.

* Section 4

   The UAC MAY use additional information (for example the final
   response which triggered the 199 response) received in the 199
   response when initiating new sessions, if it is possible to avoid the
   new session initiation request to be rejected.

What is the meaning of the final clause?

* Section 5

Add "early" as marked:

   When a UAS wants to terminate *an early* dialog it sends a non-2xx
   SIP final response, as specified in [RFC3261].  In addition, prior
   to sending the non-2xx SIP final response, the UAS MAY send a 199
   response to indicate that the dialog is being terminated.

This clarifies that 199 cannot be used to terminate a confirmed
dialog.

(The reason a UAS may want to send a 199 is to provide this
information even when the upstream proxy does not support 199.)

There is a subtlty to the second sentence:

Sending the 199 *before* the final response is not necessary due to
the semantics of 199 (as it will probably reach the UAC first anyway,
and it would not matter if it did not), but rather to prevent the
upstream proxy from generating a 199 based on the final response, and
then to transmit the UAS's 199 immediately after -- if the UAS sends
the 199 first, any upstream proxy will (most likely) see the 199
before seeing the final response (which might induce the proxy to send
its own 199).

* Section 6

   When a forking proxy receives a non-2xx final response which
   terminates one or more early dialogs and the proxy does not intend to
   forward the final response immediately (due to the rules for a
   forking proxy) it MUST send a 199 provisional response, for each
   associated early dialog that it can associate with the final
   response, upstream towards the sender of the associated request.

Clarify, and note that if the proxy has already passed a 199 for an
early dialog, it need not generate one itself.  Also, I've reduced
MUST to SHOULD, because (as the following NOTE explains), the proxy
may not know of all early dialogs which are terminated by the final
response.

   [...] it SHOULD initiate a 199 provisional response upstream
   towards the sender of the associated request, for each terminated
   early dialog, excepting those for which it has already transmitted
   a 199 response.

Note that the "already transmitted 199 responses" may have come from
downstream proxies as well as downstream UASs, so this consideration
applies even if we do not allow UASs to send 199s.

* Section 7

   Since all SIP entities involved in a session setup do not necessarily
   support the specific meaning of the 199 Early Dialog Terminated
   provisional response, the sender of the response MUST be prepared to
   receive SIP requests associated with the dialog for which the 199
   response was sent.

This situation can also result due to race conditions.  Amend to:

   Because of race conditions and because the client may not support the
   specific meaning of the 199 provisional response, the sender of the
   response MUST be prepared to receive SIP requests associated with
   the dialog for which the 199 response was sent.

And add a qualifier to this sentence:

   If such request is received, and the receiver maintains state of
   the dialogs, the receiver MUST reply to such requests with a 481
   final response (unless another error response is more appropriate).

* Section 7

Remove "..." from this sentence and add "even" as marked:

   The 199 Early Dialog Terminated response code MUST NOT replace a
   final response.  A final response MUST always be sent, *even* after
   one or many 199 Early Dialog Terminated provisional responses have
   been sent.

* Section 8

Clarify this sentence to:

   The 199 Early Dialog Terminated response code allows a SIP entity
   to indicate to upstream entities that a specific early dialog has
   been terminated, before a final response reaches the upstream
   entities.

Add the following:

   The early dialog that has been terminated is identified by the Call-Id
   header and the to-tag value of the 199 response.

   Future standards may define optional additional information carried
   in the headers and/or body of the response.

* Section 9

   A 199 Early Dialog Terminated provisional response MUST NOT contain a
   new SDP offer/answer message body, but the sender of the response MAY
   insert a copy of a previously sent offer/answer message body as
   otherwise allowed by the offer/answer rules for a provisional
   response.

This rule seems excessively strict, as it seems OK to send a new SDP
answer in a 199, even if the dialog will be immediately terminated.
Certainly, the UAC cannot tell the difference, as there could have
been a previous but lost 1xx response carrying the same SDP.

The interaction of 199 and SDP probably needs further study...

* Section 11

Nit:  Use "reject" here rather than "rejects":

   UAS_2 and UAS_3 *reject* the INVITE by sending a 4xx error response.

Here is a modification of the example, showing how a UAS can send a
199, and how the proxy handles it.  (You may or may not want to use
this.)  I've also added the ACK's for the 4xx's, which were missing in
the original.

   [...] UAS_2 and UAS_3 reject the INVITE by sending a 4xx error
   response.  UAS_3 sends a 199 with its 4xx.  When P1 receives the
   4xx response from UAS_2 it immediately sends a 199 Early Dialog
   Terminated associated with UAS_2's dialog towards the UAC.  P1
   transmits UAS_3's 199, and so does not initiate one itself for
   UAS_3's dialog when it receives UAS_3's 4xx response.

      UAC               P1                  UAS_2    UAS_3    UAS_4

       --- INVITE ------>
                         --- INVITE (leg 2) ->
                         --- INVITE (leg 3) ---------->
                         --- INVITE (leg 4) ------------------->
                         <-- 18x (leg 2) -----
       <-- 18x (leg 2) --
                         <-- 18x (leg 3) --------------
       <-- 18x (leg 3) --
                         <-- 18x (leg 4) -----------------------
       <-- 18x (leg 4) --
                         <-- 4xx (leg 2) -----
       <-- 199 (leg 2) --
                         --- ACK (leg 2) ---->
                         <-- 199 (leg 3) --------------
       <-- 199 (leg 3) --
                         <-- 4xx (leg 3) --------------
                         --- ACK (leg 3) ------------->
                         <-- 200 (leg 4) -----------------------
       <-- 200 (leg 4) --
       --- ACK (leg 4) ->
                         --- ACK (leg 4) ---------------------->

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

Reply via email to