Hi, Actually the implementation of this could be You will do a REGISTER once u receive a response for un-REGISTER, which shall avoide the race condition..
/Sreenath ----- Original Message ---- From: zhang jw <[EMAIL PROTECTED]> To: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> Cc: [email protected] Sent: Saturday, 3 March, 2007 9:58:41 AM Subject: Re: [Sip-implementors] How to update registrar bindings when Call-ID is different I have another problem about Register after reboot. If an UA rebooted after send a un-REGISTER ( expire time is zero) with callid = callid1, then it send another REGISTER after reboot with same conatct but different callid = callid2. If the registrar received the second REGISTER first, the binding regitered previously will be updated with callid = callid2, then the first REGISTER received, the registration-binding will be removed cause it has a differenct callid = callid1 and expiretime=0. Is this a possible scenario? On 2/11/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > 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 > _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors __________________________________________________________ Yahoo! India Answers: Share what you know. Learn something new http://in.answers.yahoo.com/ _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
