Hi everybody,
I just finished adding support for BRANCH routes. The idea and frame
were partial ported from SER (thanks to Juha for extracting and adapting
patches). For those who are not familiar with this concept: branch route
is a route to be execute separately for each branch before being sent
out - changes in that route should reflect only on that branch.
I say partial because the features, implementation were improved.
Shortly here is a list:
- remove from grammar default BRANCH ROUTE definition - since this
is a 100% TM route, make no sense
- RURI may be changed from a branch route (the routing will
accordingly change); This capability is essential, since there are core
function which alter the RURI, functions which cannot be blocked in
specific route types - not handling this, may easyly lead to memory
faults or leaks.
- flags per branch - if flags are changed in branch_route, the
change will not be visible for other branches, but it will be visible
for all replies of that branch (it might be useful for per branch NAT
traversal)
- full AVP support in branch route
- more efficient handling of lumps (changes in request) - instead of
cloning and removing the entire lump tree for each branch, using lump
flags, after each branch, the original lump tree will be just cleaned
only what was added during branch route will be removed).
still pending: how to handle append_branch() core function.....I will
prefer to handle properly all core functions, since their execution
cannot be banned from specific routes.
For the moment only textops, avpops and xlog modules were enabled for
branch route. Other will come in the future.
regards,
Bogdan
PS: testing done only superficial (is quite late now).....any
help/reports are welcomed :D