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