"Adam B. Roach" wrote:
> 

>    - 480 vs 603
> 
>        480 indicates that the user is, for some reason, unavailable.
>            This would be appropriate, for example, if a phone
>            is in a "do not disturb" mode.
> 
>        603 means that the user you are trying to contact has been
>            reached, and has explicitly declined this particular
>            phone call. This would be appropriate if, for example,
>            your device/program displays the name of the caller,
>            and the called party presses a "reject" button.
> 
>    486 vs 600
> 
>        486 is a device busy state. This is what you normally think
>            of when you get a busy tone.
> 
>        600 is a user busy state. There is no analogous situation in
>            today's telephony system. It means that you have
>            contacted the correct user, but he has indicated
>            that he will not take the call because he is busy.
>            It is completely inappropriate to return a 600 for a
>            device busy state, since it termintates outstanding
>            searches.

Absolutely correct. The big difference between 400 and 600 is search
termination.


> 3) This is actually a disagreement I have with RFC2543, and
>    one that I raised some time ago; however, no one seemed
>    interested at the time. Since it actively prevented us from
>    running one of the test cases we wanted to run at this bakeoff,
>    I'm going to raise the issue again. Take discussion on this
>    topic to the SIP working group mailing list, please.
> 
>    According to section 6.37, an implementation should reject
>    messages containing unknown URIs in the "To:" field with
>    a 400 response. Many implementations actually did this.
>    The test case we were attempting was as follows:
> 
>    UAC1 ----> tel: mapping proxy -----> UAC2
> 
>    UAC1 then sends a message to the tel: mapping proxy like:
> 
>      INVITE tel:5551234 SIP/2.0
>      To: <tel:5551234>
>      From: <sip:bob@uac1>;tag=12345
>      Call-ID: fffff@uac1
>      CSeq: 7654 INVITE
> 
>    Because the proxy mapped the request URI, the INVITE that
>    UAC2 received ends up looking like:
> 
>      INVITE sip:5551234@uac2 SIP/2.0
>      To: <tel:5551234>
>      From: <sip:bob@uac1>;tag=12345
>      Call-ID: fffff@uac1
>      CSeq: 7654 INVITE
> 
>    UAC2 definitely has quite enough information to service the
>    call. In fact, if not for this clause in 2543, the call would
>    be set up perfectly. I contend that clients shouldn't
>    care if they understand the URI in the To: field, as long
>    as they can process the call, and I encourage implementations
>    to exhibit this behavior.
> 
>    This also follows naturally from what I suggested above: don't
>    validate fields unless you intend to use the information
>    contained in them.

Hmm. This is a good point. Given the increasing use of tel URLs, its
probably worth changing this in rfc2543bis. This doesn't introduce
backwards compatibility problems; it just means that calls to UAs
compliant to the bis version will get set up successfully, when they
won't with rfc2543.

In general, the *request URI* is what is important in processing a
request. The To field is used only for (1) call leg identification
(along with From and Call-ID), and (2) FYI to the called party. The
request URI represents the desired user at the server being contacted.
The To field may contain a URI which is meaningless within the namespace
served by the server. 


Thanks for putting these lessons learned together. They should be
incorporated into the FAQ.

-Jonathan R.
-- 
Jonathan D. Rosenberg                       72 Eagle Rock Ave.
Chief Scientist                             First Floor
dynamicsoft                                 East Hanover, NJ 07936
[EMAIL PROTECTED]                     FAX:   (732) 741-4778
http://www.cs.columbia.edu/~jdrosen         PHONE: (732) 741-7244
http://www.dynamicsoft.com

Reply via email to