Good morning.
We've got a problem with location memory and database replication between "n" kamailios as REGISTRAR servers.
1.- WHAT WE WANNA DO:
- To have "n" Kamailios with their DB and memory "user location" replicated. - Each Kamailio owns its own DB.(It could be also with a common DB). - Each kamailio has a PUA_REGINFO, PRESENCE, and REGISTRAR roles. - USRLOC Module with db_mode = 2 (Write-Back scheme).
2.- WHAT WE DON'T WANNA DO:
- USRLOC Module with db_mode != 2 (Write-Back scheme).
3.- BACKGROUND:
- RFC3265 - RFC3680 - RFC3903 - I attach a small architecture graph.
4.- PROBLEMS:
4.1 Deadlock:
Each REGISTER involves a NOTIFY to the other side. Each NOTIFY involves another NOTIFY to the other side.
There should be a mechanism to avoid PUBLISH reginfo_handle_notify() function calls but to PUBLISH save() calls on pua_reginfo module.
Any idea would be appreciated (also to workaround our problem).
4.2 PUA_REGINFO module notify.c
Just FYI.
We think It doesn't comply to RFC3680. It should observe "unkown-param" object to aid "Contact" header params such as "Path", "Received", "User_agent" and so on.
We've changed code but for a fast startup we've also avoided "unkown-param" and now we're able to see replicated "Path", "Received ... params on each DB.
Thanks and best regards.
Eduardo Lejarreta.