[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