[OpenSIPS-Users] accessing to branch data

Liviu Chircu liviu at opensips.org
Tue Aug 23 18:04:11 CEST 2016


Hi Artem!


Here are a few examples, so you better understand how the branch array 
gets populated after you do a lookup():

lookup();

- with 1 device  behind an AoR: R-URI is updated (branch #1), $branch 
array has 0 elements
- with 2 devices behind an AoR: R-URI is updated (branch #1), $branch 
array has 1 element (index 0, corresponding to branch #2)
- with 3 devices behind an AoR: R-URI is updated (branch #1), $branch 
array has 2 elements (indexes 0 and 1, corresponding to branches #2 and #3)

...

Regarding deleting/adding branches vs. increasing MAX_BRANCHES (in 
config.h), I'd choose the second option. It will only cost you a bit 
more memory for each transaction.

Liviu Chircu
OpenSIPS Developer
http://www.opensips-solutions.com

On 23.08.2016 18:31, Чалков Артём wrote:
> Ok, i found my mistake with 2nd part (deleting branches) - it seems 
> like i cant delete branches from failure_route by $T_branch_idx 
> because outside branch_route it always have value 0. Okay, so, can i 
> somehow delete "expired" branches (to not reach branch limit. yes, i 
> know that i can extend the limit, but i think its a bad idea) or its 
> totally impossible?
> Also, first part of my question (about accessing data) is still actual.
>
> 23.08.2016, 17:21, "Чалков Артём" <achalkov at ya.ru 
> <mailto:achalkov at ya.ru>>:
>>
>> Hi all!
>> Could you tell me how can i get access to the data of branches, 
>> generated by lookup()?
>>
>> I have something like that:
>>
>> ...
>> route[LOOKUP] {
>> ...
>> lookup("location");
>> t_on_branch("ON_BRANCH");
>> ...
>> }
>>
>> branch_route["ON_BRANCH"] {
>> ...
>> xlog("L_INFO", "[ON_BRANCH] Current branch data: idx = $T_branch_idx, 
>> uri = $(branch(uri)[$T_branch_idx])");
>> ...
>> }
>> ...
>>
>> When lookup found more than 1 contact it appending a new branches, 
>> but i could read any data only from first of them:
>>
>> Aug 23 16:56:03 opensips-test /usr/sbin/opensips[18629]: [ON_BRANCH] 
>> Current branch data: idx = 0, uri = sip:name at domain
>> Aug 23 16:56:03 opensips-test /usr/sbin/opensips[18629]: [ON_BRANCH] 
>> Current branch data: idx = 1, uri = <null>
>> Aug 23 16:56:03 opensips-test /usr/sbin/opensips[18629]: [ON_BRANCH] 
>> Current branch data: idx = 2, uri = <null>
>>
>> So, i can't access to any data of any branch except first one. Even more:
>>
>> I need to delete branches after they fires fr_times (local 408 is 
>> received). To do that, i trying to call remove_branch($T_branch_idx) 
>> from failure_route:
>>
>> ...
>> failure_route[ON_FAIL] {
>> ...
>> if (t_check_status("408")) {
>> ...
>> remove_branch($T_branch_idx);
>> route(LOOKUP);
>> }
>> ...
>> }
>>
>> but after that, all branches still on their places. So, can i somehow 
>> delete these "expired" branches?
>>
>> version: opensips 2.1.4 (x86_64/linux)
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
> -------- Завершение пересылаемого сообщения --------
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20160823/f46223f0/attachment.htm>


More information about the Users mailing list