On 7/18/17 4:00 AM, Rakesh wrote:
Hi Paul,

Thanks for the update.

So the 200OK in step 4 Registrar should respond with only one contact header Contact: ""<sip:+168999@178.21.49.29 <mailto:sip%3A%2B1689998@178.21.49.29>:3694;transport=udp;Hpt=8ea2_16;ssn;TRC=ffffffff-ffffffff;srti=s1_2>;expires=7200 ?

Yes.

But since there is a difference in contact so it has to be overwritten with the previous contact of step1?

I don't understand what you are trying to say with this last sentence.

In my earlier reply I quoted the wrong section of 3261. (It was the section for clients, not registrars.) The applicable portion is from steps 7&8 of section 10.3:

     7.  ...
         For each address, the registrar then searches the list of
         current bindings using the URI comparison rules.  If the
         binding does not exist, it is tentatively added.  If the
         binding does exist, the registrar checks the Call-ID value.  If
         the Call-ID value in the existing binding differs from the
         Call-ID value in the request, the binding MUST be removed if
         the expiration time is zero and updated otherwise.  If they are
         the same, the registrar compares the CSeq value.  If the value
         is higher than that of the existing binding, it MUST update or
         remove the binding as above.  If not, the update MUST be
         aborted and the request fails.
         ...

      8. The registrar returns a 200 (OK) response.  The response MUST
         contain Contact header field values enumerating all current
         bindings. ...

Hence it is clear that new contact value must be recorded by the registrar and returned in the response.

Currently, the Registrar is working in the below way,

Contact: ""<sip:+168999@178.21.49.29:3694;transport=udp;Hpt=8ea2_16;ssn;srti=s1_2>;expires=0

Contact: ""<sip:+168999@178.21.49.29:3694;transport=udp;Hpt=8ea2_16;ssn;TRC=ffffffff-ffffffff;srti=s1_2>;expires=7200

Since the both the contact are same as per 19.1.4 it is only keeping the contact header value of the second REGISTER request.

Again I don't understand your point. The response enumerate all *current* bindings. Because it is returning two URIs it must think that they are both current. Yet they compare equal so the registrar should have replaced the old one with the new one, and hence there should only be one current contact - the new one.

        Thanks,
        Paul

Can you please clarify?

BR///

Rakesh Kumar Mohanty


On Mon, Jul 17, 2017 at 10:13 PM, Paul Kyzivat <pkyzi...@alum.mit.edu <mailto:pkyzi...@alum.mit.edu>> wrote:

    On 7/17/17 11:08 AM, Rakesh wrote:

        Hi Expert,

        Now I got the full picture for the problem.

        SIP Registrar  behavior for the URI contact matching

        1) REGISTER request with belwo contact send to Registrar

        Contact: ""<sip:+168999@178.21.49.29
        
<mailto:sip%3A%2B168999@178.21.49.29>:3694;transport=udp;Hpt=8ea2_16;ssn;srti=s1_2>;expires=7200

        2) Registrar sent 200OK with below contact

        Contact: ""<sip:+168999
        ​​
        @178.21.49.29
        
<mailto:sip%3A%2B168999@178.21.49.29>:3694;transport=udp;Hpt=8ea2_16;ssn;srti=s1_2>;expires=7200

        3) Now there is another REGISTER request send to the Registrar
        in contact with additional parameter mentioned below

        Contact: ""<sip:+168999@178.21.49.29
        
<mailto:sip%3A%2B1689998@178.21.49.29>:3694;transport=udp;Hpt=8ea2_16;ssn;TRC=ffffffff-ffffffff;srti=s1_2>;expires=7200

        4) Then Registrar sent 200OK response with below contact
        headers. Where the Initial contact has value expires= 0

        Contact: ""<sip:+168999
        ​​
        @178.21.49.29
        
<mailto:sip%3A%2B168999@178.21.49.29>:3694;transport=udp;Hpt=8ea2_16;ssn;srti=s1_2>;expires=0

        Contact: ""<sip:+168999@178.21.49.29
        
<mailto:sip%3A%2B1689998@178.21.49.29>:3694;transport=udp;Hpt=8ea2_16;ssn;TRC=ffffffff-ffffffff;srti=s1_2>;expires=7200


        So is it a valid behavior from Registrar server? Which leads the
        earlier post asked for contact matching.


     >From 3261:

    10.2.4 Refreshing Bindings

        Each UA is responsible for refreshing the bindings that it has
        previously established.  A UA SHOULD NOT refresh bindings set up by
        other UAs.

        The 200 (OK) response from the registrar contains a list of Contact
        fields enumerating all current bindings.  The UA compares each
        contact address to see if it created the contact address, using
        comparison rules in Section 19.1.4.  If so, it updates the
    expiration
        time interval according to the expires parameter or, if absent, the
        Expires field value.  The UA then issues a REGISTER request for each
        of its bindings before the expiration interval has elapsed.  It MAY
        combine several updates into one REGISTER request.

        A UA SHOULD use the same Call-ID for all registrations during a
        single boot cycle.  Registration refreshes SHOULD be sent to the
    same
        network address as the original registration, unless redirected.

    We have already discussed those comparison rules. So the second
    REGISTER should qualify as a refresh. But apparently the registrar
    is not recognizing it as such and instead is treating it as an
    additional registration. That appears to be a bug in the registrar.

             Thanks,
             Paul



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

Reply via email to