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, "Чалков Артём" <[email protected] <mailto:[email protected]>>:

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@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
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

-------- Завершение пересылаемого сообщения --------


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to