Hi Everyone,

My project involves keeping track of the allowable duration for the caller to talk, and keeping track of the status of the call with the back end database.  Currently i have implemented using the following modules (aside from the default modules in the sample config script).
* http_async_client.so - to communicate with the backend DB
* dialog.so - mainly use to detect the 200 ok answer in relation to invite, and the end of the call
* cnxcc.so - to release the call when the allowable talk time is reached

The flow is as below:-

Invite -- > http to backend DB to ask for talk time
          <-- DB returns value
200 ok (answer) ---> http backend DB to update that the call has answered
          <-- DB returns ok
dialog end or Cnxcc terminate --> http backend DB to update that the call has hangup

My problem is that if there is a need to restart the kamailio config there is no 'graceful' way to hangup all the calls and inform the backend, or deny any new calls from coming in. If kamailio is restarted then cnxcc would have forgotten that there is a maximum talk time allowed to be called or recover from the restart.

How to I make the system resilience to failures/restarts.

Appreciate any good suggestions. 

regards
CK