From: Marco Ambu <[EMAIL PROTECTED]> 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? Yes, you should, and you should store the CSeq. I believe that the point of the rule is not that a change in call-id causes something strange to be done in regard to updating the binding. Note that "must be removed if the expiration time is zero and updated otherwise" is what would happen with an ordinary REGISTER. The idea is that if the call-id changes, the usual check for out-of-order CSeq values is bypassed. If the call-id changes, the last received REGISTER is assumed to update any previously received REGISTER. But if the call-ids are the same, ordering is done via cseq. This rule makes the situation of a rebooted UA work correctly. Dale _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
