Hi List
Testing failure situations, I discovered unset_dlg_profile can
not be used in request_route:
I count the channels per customer in a dlg_profile to know when they
are busy. Residential POTS customer have 1 channel.
Now this situation (Trying to mimik POTS behavior)
Kamailio <=> CPE of 'John-Doe'
=> INVITE
set_dlg_profile of John-Doe is 0: Not busy
set_dlg_profile of John-Doe +1
<= 100 trying
<= 180 ringing
== LINK to CPE DISRUPTED ==
X<= 200 OK (not reaching kamailio)
CPE is sending 200 a couple of times and fails.
Caller is still hearing ringing tone as it never got 200 OK.
The caller does not want to wait longer and hangs up
=>X CANCEL (NOT reaching CPE)
This is the moment, on which I would like to unset_dlg_profile of
John-Doe to mark his channel available again.
But the CPE is never going to acknowledge this CANCEL with 487.
Unfortunately: unset_dlg_profile(): dialog delete profile cannot be used in request route
Only when kamailio has sent CANCEL a couple of times and the
failure_route for this CANCEL is triggered, I can remove the call
from the dlg_profile of that customer within failure_route.
If I am unlucky, in the meantime other calls get 'busy' instead of
being re-routed to the configured backup number of that customer.
Agreed, after a couple of seconds, the call goes to the failure
route and the dialogue is ending thus calls work as expected.
But wouldn't it be nice to be able to unset the
dlg_profile upon receiving the CANCEL instead on when the CANCEL
transaction is successful?
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web
http://www.imp.ch
______________________________________________________