[Devel] Re: [Users] BRANCH route support

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed Aug 24 11:29:10 CEST 2005

Hi Iqbal,

you can use the branch route if you want to add/remove headers 
independently, per branch. Imagine the following scenario:

you are doing parallel forking to a phone and to a GW; for the phone you 
want to add header to set the ringing type, but this make no sense to 
send also to GW; on the other hand you want to add to GW some headers 
containing billing information, info that you do not want to go also to 
the phone.

So, what you do in branch route? if uri points to GW, add the billing 
(or whatever) header to the request; if points to an usrloc client, add 
the ringing type header.


Iqbal wrote:

> So as a user, how would/could I use this
> Iqbal
> Bogdan-Andrei Iancu wrote:
>> 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
>> _______________________________________________
>> Users mailing list
>> Users at openser.org
>> http://openser.org/cgi-bin/mailman/listinfo/users
>> .

More information about the Devel mailing list