[SR-Users] Call Group versus MAX_BRANCHES limit

Daniel-Constantin Mierla miconda at gmail.com
Tue Sep 30 12:28:00 CEST 2014


Hello,

On 29/09/14 22:47, João Vitor Arruda wrote:
> Hi folks,
>
> I have a question related with the limited number of branches being 12 
> in config.h
> #define MAX_BRANCHES            12      /*!< maximum number of 
> branches per transaction */
>
> I am trying to implement a Call Group that consists in trying each 
> member of the group (that can result in a parallel forking when 
> lookup() is used) in sequence (similar to serial forking).
>
> Currently I have written code that is similar to the one described here:
>
> http://www.kamailio.org/dokuwiki/dokuphp/tutorials:avpops#serial_forking
>
> The only difference is that for each member I call lookup() and then 
> in the failure_route(), I pull the next member from the stack and call 
> lookup() again.  The code works fine when used for groups with less 
> than 12 members.  However, call groups with 12 or more members fails 
> as I can never reach remaining extensions once MAX_BRANCHES limit is 
> reached.
>
> I've tried another approach using the functions described here:
>
> http://kamailio.org/docs/modules/4.1.x/modules/tm.html#tm.serial_forking
>
> but it too uses a new branch for every group member until the 12 limit 
> is reached out.
>
> I also tried to use the functions "remove_branch(index)" and 
> "clear_branches()" (both of which are poorly documented. In fact the 
> only reference I ever found for these functions was here: 
> http://www.kamailio.org/wiki/features/new-in-3.2.x#functions). 
> Unfortunately, I wasn't able to prevent the MAX_BRANCHES limit from 
> being reached.
>
> Ultimately, my goal is to have a limitless Call Group.  Do you have 
> any suggestions? (other than increasing the hard coded MAX_BRANCHES limit)
the easiest is probably recompiling with more branches. There was 
someone saying that he is going to submit a patch on making the number 
of branches more dynamic, but I haven't seen it back.

 From routing point of view, you can try a workaround with:
- append 11 branches to the same sip address (see append_branch() 
function) and relay
- be sure you allow traffic from server itself
- now you get 12 INVITE coming back to kamailio, so you get 12 INVITE 
requests and you can set 12 different destinations for each, ending up 
with 144 over-all branches in the group call
- if you need more, you can loop back again one or more of those INVITE 
requests with branches pointing to same SIP address

Cheers,
Daniel

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140930/cb5b103e/attachment.html>


More information about the sr-users mailing list