[Serusers] How to avoid calling route() in a failure_route block?
Daniel-Constantin Mierla
daniel at voice-system.ro
Mon Oct 24 18:17:07 CEST 2005
On 10/24/05 18:33, Tim Klein wrote:
> Greger,
>
> Thank you very much for your help! The documentation says only a few
> types of actions are legal in failure_route blocks, and route()
> commands are not listed among them. I'm happy to know that route()
> commands are OK there though, since that makes some kinds of "retry"
> strategies easy to program.
there might be problems when calling a route() from a failure_route, if
the functions from the route block are not legal in failure_route
blocks. The check done in SER does not test the top route type, but
current route type. You can port from OpenSER the '-C' option which does
such check and should avoid having troubles in this situation.
Daniel
>
>
> Tim
>
>> route can be called from failure_route. Just make sure your function
>> is safe (i.e a failure_route will on a parallell fork be called
>> several times with different messages)
>> g-)
>> ----- Original Message ----- From: "Tim Klein"
>> <tkpublic at timklein.fastmail.fm>
>> To: <serusers at lists.iptel.org>
>> Sent: Friday, October 21, 2005 01:12 AM
>> Subject: [Serusers] How to avoid calling route() in a failure_route
>> block?
>>
>>> I have an unusual need: If a contact in the usrloc database is
>>> unreachable for any reason, I must immediately delete it from the
>>> usrloc
>>> database. I know how to do the deletion, but I don't know the right
>>> way
>>> to write my configuration script.
>>>
>>> Below is the script that I want to write. But I think it won't work,
>>> because I think it's illegal for a failure_route block to call a
>>> route()
>>> command. (Am I correct about that?)
>>>
>>> Can anyone tell me what I should do instead of the following?
>>>
>>> Thank you in advance!
>>>
>>> Tim
>>>
>>> ==============
>>>
>>> route {
>>>
>>> [...irrelevant stuff omitted...]
>>>
>>> if (method==INVITE) {
>>> route(1);
>>> }
>>> }
>>>
>>> route[1] {
>>> if (lookup("location")) {
>>> t_on_failure("99");
>>> t_relay();
>>> } else {
>>> t_reply("404","Not Found");
>>> }
>>> }
>>>
>>> failure_route[99] {
>>> delete_location_from_usrloc(); # I will write this function.
>>> route(1);
>>> }
>>>
>>> ==============
>>>
>>>
>>> _______________________________________________
>>> Serusers mailing list
>>> serusers at lists.iptel.org
>>> http://lists.iptel.org/mailman/listinfo/serusers
>
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
More information about the sr-users
mailing list