Subject: [Sip] Question regarding correct SIP behaviour in unregistration

From: Szelényi Csaba <[email-masked]>
Date: Fri, 5 Sep 2003 10:39:18 +0200

Hello,

I am sorry about cross-posting this mail to the lists SIP, SIP Forum Discussion and SIP CTWG. I could not decide, which forum is or which forums are appropriate to be addressed with these questions. 

Q1: IMHO RFC 3261 Section 10.3 Item 6 does not cover a case: what is the right behaviour of the Registrar on receipt an unregistration request for bindings that cannot be found in its database?

      6. The registrar checks whether the request contains the Contact
         header field.  If not, it skips to the last step.  If the
         Contact header field is present, the registrar checks if there
         is one Contact field value that contains the special value "*"
         and an Expires field.  If the request has additional Contact
         fields or an expiration time other than zero, the request is
         invalid, and the server MUST return a 400 (Invalid Request) and
         skip the remaining steps.  If not, the registrar checks whether
         the Call-ID agrees with the value stored for each binding.  If
         not, it MUST remove the binding.  If it does agree, it MUST
         remove the binding only if the CSeq in the request is higher
         than the value stored for that binding.  Otherwise, the update
         MUST be aborted and the request fails.

When no binding is registered for the specified AOR, upon receiving a REGISTER request with Expires header field value of zero and Contact header field value set to '*' (i.e. there is no binding to be removed for the given AOR, therefore the Registrar is unable to check the Call-ID), what response must/should be sent? Is a '404 Not Found' response or a '200 OK' response appropriate? 

Q2: Similarly to Q1, what would be the right response ('404 Not Found' or '200 OK') for unregistration requests, if the binding requested for removal already expired? The binding may exist in the database for a short time after expiration, as we have seen it checking some implementations. If the record of the binding has been removed, we get beck to Q1. 

Would it be a possible answer to the questions, that it is not regulated by RFC 3261, therefore it is up to the implementation, what to do?

Any help, URL or reference would be highly appreciated.

Thank you in anticipation,

Szelenyi Csaba
T-Systems RIC
mailto:[email-masked]
+36 1 456 5507
+36 20 477 7778

_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip

---

From: Robert Sparks <[email-masked]>
Date: 05 Sep 2003 08:50:13 -0500

If the AOR exists, then the response in both cases is still 200 -
You've accepted and processed the registration request. You indicate
that there are no bindings by not returning any contacts in the 200
response.

If the AOR does not exist, you would have returned a 404 before
looking to see if there were any bindings.

Deleting a contact that does not exist is not an error.

RjS

---

From: Rohan Mahy <[email-masked]>
Date: Fri, 12 Sep 2003 10:12:13 -0700

On Friday, September 5, 2003, at 01:39 AM, Szelényi Csaba wrote:
> Hello,
>
> I am sorry about cross-posting this mail to the lists SIP, SIP Forum 
> Discussion and SIP CTWG. I could not decide, which forum is or which 
> forums are appropriate to be addressed with these questions.

if you are not sure which list to post to, feel free to email the 
chairs or moderators individually and ask.  alternatively it is better 
to pick *one* list (even if it the wrong one), as your request will 
probably be referred to the correct list anyway.

the correct list for these questions is actually 
[email-masked]

> Q1: IMHO RFC 3261 Section 10.3 Item 6 does not cover a case: what is 
> the right behaviour of the Registrar on receipt an unregistration 
> request for bindings that cannot be found in its database?

I think of a REGISTER request with Expires: 0 meaning "make sure there 
is no registration for this AOR with this contact".  If the AOR exist 
then the correct behavior is to send a 200-class response.  If the AOR 
does not exist, then a 404 is appropriate.

thanks,
-rohan

> When no binding is registered for the specified AOR, upon receiving a 
> REGISTER request with Expires header field value of zero and Contact 
> header field value set to '*' (i.e. there is no binding to be removed 
> for the given AOR, therefore the Registrar is unable to check the 
> Call-ID), what response must/should be sent? Is a '404 Not Found' 
> response or a '200 OK' response appropriate?
>
> Q2: Similarly to Q1, what would be the right response ('404 Not Found' 
> or '200 OK') for unregistration requests, if the binding requested for 
> removal already expired? The binding may exist in the database for a 
> short time after expiration, as we have seen it checking some 
> implementations. If the record of the binding has been removed, we get 
> beck to Q1.
>
> Would it be a possible answer to the questions, that it is not 
> regulated by RFC 3261, therefore it is up to the implementation, what 
> to do?
>