Menu

#221 Contact matching in usrloc

ver devel
open
nobody
modules (357)
3
2007-12-06
2007-05-05
No

USRLOC module does not reckon default values of some kinds of Contact HF parameters while Contact header filed processing (e.g. kind of transport protocol(transport=udp by default), transport protocol port (5060 by default), etc.) which can be missed (see RFC3261 and related documents for more details).
For example, USRLOC considers following Contact HF values as different:

sip:usr@host
sip:usr@host:5060;transport=udp

This causes a problem to unregister a user contact properly while processing of REGISTER request by save() routine.

Furthermore save() routine does not notify if it cannot update/remove an entry within USRLOC if REGISTER request contains Contact HF like described above, for example:

- an UA refreshes registration via REGISTER request but with Contact HF value different from initial one (the first REGISTER has had) but really correct and equal to initial Contact (see examples above). In such case openser can remove UA registration as expired when UA is considering server registration as actually.

- an UA closes a session to openser server via REGISTER request with Expires=0 and Contact HF value different from initial one (the first REGISTER request while session open has had) but really equal to initial one, see examples above. In such case server is considering given UA registration as actual and may send a lot of asynchronous kinds of requests (e.g. NOTIFY) to the contact that is not really valid. This can cause server hang up: UDP message sending is repeating until an acknowledgment is received from UA site and this process can take a lot of CPU resources.

Described problem takes a place on openser 1.0, 1.1, 1.2 .

Discussion

  • Bogdan-Andrei Iancu

    Logged In: YES
    user_id=1275325
    Originator: NO

    for next release

     
  • Bogdan-Andrei Iancu

    • milestone: 699848 --> ver devel
    • priority: 5 --> 3
     

Log in to post a comment.

MongoDB Logo MongoDB