Hi,
implementing a registrar server we found some problems with this part of 
RFC 3261 - 10.3 (page 66):
"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."

For example if we have 1 binding for AOR_1 to (callID_1, contactURI_1, ...)
and we receive another REGISTER request for AOR_1 with callID_2 and 
contactURI_1 but the expiration time is not zero, we should update the 
binding.

Must we update also the call-ID value? from CallID_1 to callID_2?

Following is what I have understood from the paragraph above in pseudo-code.
Is this procedure correct to handle registrar requests?
**
if "binding_not_exists"
    insert binding
else ("binding_exists")
    if "callID for existing_binding" != "callID for new binding"
        if "expireTime" == 0
            remove binding
        else
           update binding      <<-- update also call-ID value???
    else
       if "CSeq OK"
            if "expireTime" == 0
                remove binding
            else
               update binding
       else
          abort request
**

thanks.
-- 

Marco Ambu
R&D Software Engineering
Abbeynet S.p.A. - www.abbeynet.com <http://www.abbeynet.com>

phone: +39 070 2339331

<http://www.marco_ambu.sitofono.it>


_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to