[OpenSIPS-Devel] [Request for Brain[storming]] New types of routes in config

Bogdan-Andrei Iancu bogdan at voice-system.ro
Fri Apr 24 17:37:16 CEST 2009


Hi,

Following some discussion on mailing lists and IRC chat, I think there 
is a need to enhance the routing possibilities in the OpenSIPS, in order 
to simplify things and to allow more complex scenarios.

But I would like to boil a bit the ideas here, with all of you (more 
brains are definitely better than one ;))


1. Init Route (new)

A route to be executed at startup only - this will allow the script 
writer to load stuff from DB , to populate memcache-ul, so, to prepare 
the routing process. More or less you can do this first time load even 
now, but you need to check all the time if you already did it or not (if 
not yet loaded, load it now)...


2. Reply Route (change)

Not a new type of route, but to be able to set onreply_route per branch 
- it will simplify a lot of things (complex routing because there is a 
single reply_route block per transaction)


3. Reply Route (change) versus branch_completed Route

The idea is that receiving some reply may be an event that trigger the 
creation of new branches.
Ex (from Thomas Gelf):
       a) do parallel forking to a MOH server and to a GW
       b) MOH sends 183 and start playing media
       c) GW fails and at this point I want to create a new branch (GW 
failover) without affecting the MOH branch (and I cannot use 
failure_route as the transaction still have the MOH branch ongoing)

Changing Reply_route to allow the usage of t_reply() (+family) in this 
route - will allow to create new branches from there - it is the most 
flexible, but a bit tricky as the reply route is not protected to 
retransmissions.

Adding branch_completed Route will be more sane and structured, but more 
limited - a branch can be created only when a another branch is 
completed. For example you cannot create a new branch when you receive 
180 on another branch.


4. Timer based route

There was a request for doing parallel forking, but with asynchronous 
branches (the branches are fires one at each 10 seconds)..The idea will 
be to arm a trigger to execute a route after some period of time (this 
will work only in stateful mode)



Any idea, comments, improvements, etc about this are welcome!

Thanks and regards,
Bogdan




More information about the Devel mailing list