El Wednesday 19 December 2007 13:20:07 I?aki Baz Castillo escribi?:
El Wednesday 19 December 2007 13:15:35 David Villasmil Govea escribi?:
What's the difference between
setbflag and setflag ??
Note that if you use setbflag into a "route" you set the bflag for ALL the branches (there could be more than one branch because pararell forking and so).
If you want to set bflag just for a branch you should use "setbflag" into "branch_route".
And NEVER do "isbflagset" into a "route" since the result can be unexpectable (if a branch has that bflag active and other one not active, "isbflagset" in "route" could return 1 or 0 depending on which branch examinates before).
I ask, because i had this cfg file that was working perfectly with nat/rtpproxy. I replace it with a new cfg that was using bflag instead of flag. client-rtpproxy-client rtps stopped working. When i replace those bflags with regular flags it started working again!...
Also, as i read there, "per branch" means each location... talking about location, is there a reason a client would have 98 almost exactly alike locations? but for the id, they're the same... weird. And i started seeing lots of "max branch exceeded" on the syslog. We do not limit branches because a client could have his softphone and ata logged in...
thanks a lot
El Miércoles, 19 de Diciembre de 2007, David Villasmil Govea escribió:
I ask, because i had this cfg file that was working perfectly with nat/rtpproxy. I replace it with a new cfg that was using bflag instead of flag. client-rtpproxy-client rtps stopped working. When i replace those bflags with regular flags it started working again!...
In case you do a lookup("location") for a user@domain, and that user has two entries in location (one behind NAT so contact-flag = 6 and other one with public IP), then one branch will have bflag(6) set and the othe one no.
So if you test "isbflag(6)" in a "route" you will get 1 or 0 for both branches (depending on which appears first in location table) that is bad of course.
You need to do "isbflag(6)" into a "onbranch_route" because each branch is processed **independently** in "onbranch_route", so you will apply RTP solution just for the branch that requires it. Imagine the following case:
- User A with public IP calls User_B@domain. - NAT is not detected for caller. - lookup("location") of UserB@domain returns 2 branches: - One registered behind NAT (so contact_flag 6 set). - Other one registered from public IP. - Script calls "onbranch_route" where "isbflag(6)" is tested. - So, RTP solution would only be applied for first branch but not for second one (where is not a need since both caller and callee are behind NAT).
Also, as i read there, "per branch" means each location... talking about location, is there a reason a client would have 98 almost exactly alike locations? but for the id, they're the same... weird. And i started seeing lots of "max branch exceeded" on the syslog. We do not limit branches because a client could have his softphone and ata logged in...
Opssss, it seems a problem in registration process, as if a previpus entry is not updated when a new REGISTER arrives...