[OpenSIPS-Users] issue with trusted addresses listed with grp=0

Andrew Pogrebennyk andrew.pogrebennyk at portaone.com
Thu Jul 8 23:12:29 CEST 2010


Hello,
I am using the address table to keep the trusted IPs like this:

# check trusted IPs
$var(group) = get_source_group();
if ($var(group) == 32) { # use grp=32 as trusted indication
     xlog("L_INFO", "Call from trusted peer - M=$rm RURI=$ru F=$fu T=$tu 
IP=$si ID=$ci\n");
     # do something stupid
} else {
     if(!proxy_authorize("", "subscriber")) {
         proxy_challenge("", "0");
         exit;
     }
     # process the call
}

Something strange happens when the INVITE source IP comes from the 
address listed with grp=0 - the call seems to get stuck and never gets 
to digest challenge:

> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:permissions:get_source_group: Looking for <df59f95c, 55518> in address table
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:permissions:get_source_group: Found <0>
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:dialog:next_state_dlg: unref dlg 0xb4c2c944 with 1 -> 2
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:dialog:next_state_dlg: dialog 0xb4c2c944 changed from state 1 to state 5, due event 1
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:dialog:dlg_onreply: dialog 0xb4c2c944 failed (negative reply)
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:dialog:unref_dlg: unref dlg 0xb4c2c944 with 1 -> 1
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:dialog:unref_dlg: unref dlg 0xb4c2c944 with 1 -> 0
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:dialog:unref_dlg: ref <=0 for dialog 0xb4c2c944
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:dialog:destroy_dlg: destroing dialog 0xb4c2c944
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:dialog:destroy_dlg: dlg expired or not in list - dlg 0xb4c2c944 [2039:572707183] with clid 'ZmNmMjkxZjlhZmU4MzU4ZThhOWJlNTZmYzY2YjM4NTQ.' and tags 'f9383040' 'NULL'
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:core:destroy_avp_list: destroying list 0xb4c28240
> Jul  8 16:20:49 dev01 /usr/local/sbin/opensips[24667]: DBG:core:receive_msg: cleaning up
> Jul  8 16:20:50 dev01 /usr/local/sbin/opensips[24675]: DBG:tm:timer_routine: timer routine:2,tl=0xb4c2dda0 next=(nil), timeout=70
> Jul  8 16:20:50 dev01 /usr/local/sbin/opensips[24675]: DBG:tm:wait_handler: removing 0xb4c2dd58 from table
> Jul  8 16:20:50 dev01 /usr/local/sbin/opensips[24675]: DBG:tm:delete_cell: delete transaction 0xb4c2dd58
> Jul  8 16:20:50 dev01 /usr/local/sbin/opensips[24675]: DBG:tm:wait_handler: done

It looks as if something was wrong with script variables operation 
because with any grp!=0 there is a comparison operation after the 
"Found" line:

> Jul  8 16:22:31 dev01 /usr/local/sbin/opensips[25047]: DBG:permissions:get_source_group: Found <1>
> Jul  8 16:22:31 dev01 /usr/local/sbin/opensips[25047]: DBG:core:comp_scriptvar: int 20 : 1 / 32

However I can give up an idea that I am doing something stupid, else 
with 0 being default value much more people would have noticed this 
problem before. Any ideas?

-- 
Sincerely,
Andrew Pogrebennyk



More information about the Users mailing list