Hi,
I think there is a problem with the following RFC3261 statement:
UAs MUST NOT send a new registration (that is, containing new Contact
header field values, as opposed to a retransmission) until they have
received a final response from the registrar for the previous one or
the previous REGISTER request has timed out.
Let's look at the following example (this is a real scenario that happens
with the Pingtel iXpressa phone):
- UA boots up and wishes to send 2 REGISTER requests: the first one with
Expires=0 (to remove any existing bindings) and the second one with
Expires=3600 (to set active binding).
- UA sends the first REGISTER with Expires=0 and waits till final response
- Proxy has Authentication enabled, therefore it sends "401 Unauthorized"
response to the 1st REGISTER request;
- UA receives "401 Unauthorized" response and since it's final, sends the 2nd
REGISTER request with Expires=3600, simultaneously resending the 1st REGISTER
request with proper credentials
- Upon receive of "401 Unauthorized" response for the 2nd REGISTER request
UA resends it with proper credentials too.
In the above scenario, depending on the network conditions 2nd REGISTER
request may arrive to the SIP Proxy before the 1st REGISTER request does.
In fact, I managed to simulate such scenario in my lab.
As a result - instead of registering itself, equipment removes it's registration
from SIP Proxy server.
Don't you think that the RFC3261 statement should be corrected not to cover
"401 Unauthorized" response that is followed by request retransmission?
Best regards,
Alex Agranov
---
Senior Software Engineer
COMGATES Ltd.
15 Hagalim Avenue
Herzliya, 46725
Israel
Tel. +972.9.950.0404, Ext: 228
Fax. +972.9.950.0385
Mobile. +972.54.928435
