[Users] Routing calls to a sip terminator

Bill Neely ceo at xantek.cc
Fri Dec 22 02:02:59 CET 2006


My problem is related, but more basic. I cannot get a single outgoing 
connection to authenticate. Here is the relevant code from openser.cfg:

modparam("uac","credential","xxxxxxxxx:outbound.vitelity.net:password")
route{

...

  if (uri =~ 'sip:1[0-9]{10}@66.224.20.38')
        {
        xlog("L_ERR","iiiiiiiiiiiiiiiiiiiiiiiiiiiiinside 11 digit 
route$rr:$rc:$au:$ar,$du,$fu\n");
        # set failure route for authentication
		t_on_failure("3");
		# reset flag to mark no authentication yet performed
		resetflag(7);
		# forward to PSTN
		t_relay("udp:outbound.vitelity.net:5060");

...

failure_route[3]
{
xlog("L_ERR","3333333333333333333333333entering route3\n");
	# authentication reply received?
	if ( t_check_status("401|407") )
	{
		# have we already tried to authenticate?
		if (isflagset(7))
		{
			t_reply("503","Authentication failed");
			return;
		}
		if (uac_auth())
		{
			# mark that auth was performed
			setflag(7);
			# trigger again the failure route
			t_on_failure("3");
			# repeat the request with auth response this time
			append_branch();
			t_relay();
		}
	}


The call always results in a busy tone. The log file indicates that 
nothing ever reaches the failure_route[3], which I would expect it to 
do. Any ideas?

Here is the log file:

Dec 22 00:45:08 web8 openser[7070]: iiiiiiiiiiiiiiiiiiiiiiiiiiiiinside 
11 digit route<null>:0::,,sip:1020111 at 66.224.20.38 Dec 22 00:45:08 web8 
openser[7070]: DEBUG: t_newtran: msg id=1 , global msg id=0
, T on entrance=0xffffffff Dec 22 00:45:08 web8 openser[7070]: 
parse_headers: flags=ffffffffffffffff Dec 22 00:45:08 web8 
openser[7070]: parse_headers: flags=78 Dec 22 00:45:08 web8 
openser[7070]: t_lookup_request: start searching: hash=4175
3, isACK=1 Dec 22 00:45:08 web8 openser[7070]: DEBUG: RFC3261 
transaction matched, tid=c8eb
cfd3f11e821e Dec 22 00:45:08 web8 openser[7070]: DEBUG:tm:REF_UNSAFE: 
after is 1 Dec 22 00:45:08 web8 openser[7070]: DEBUG: t_lookup_request: 
transaction found (
T=0x284a8c20) Dec 22 00:45:08 web8 openser[7070]: DEBUG: 
cleanup_uac_timers: RETR/FR timers re
set Dec 22 00:45:08 web8 openser[7070]: DEBUG: add_to_tail_of_timer[2]: 
0x284a8c68 Dec 22 00:45:08 web8 openser[7070]: grep_sock_info - 
checking if host==us: 12==1
2 &&  [66.224.20.38] == [66.224.20.38] Dec 22 00:45:08 web8 
openser[7070]: grep_sock_info - checking if port 5060 match
es port 5060 Dec 22 00:45:08 web8 openser[7070]: grep_sock_info - 
checking if host==us: 12==1
2 &&  [66.224.20.38] == [66.224.20.38] Dec 22 00:45:08 web8 
openser[7070]: grep_sock_info - checking if port 5060 match
es port 5060 Dec 22 00:45:08 web8 openser[7070]: lookup(): 
'17078749006' Not found in usrloc Dec 22 00:45:08 web8 openser[7070]: 
grep_sock_info - checking if host==us: 12==1
2 &&  [66.224.20.38] == [66.224.20.38] Dec 22 00:45:08 web8 
openser[7070]: grep_sock_info - checking if port 5060 match
es port 5060 Dec 22 00:45:08 web8 openser[7070]: lookup(): 
'17078749006' Not found in usrloc Dec 22 00:45:08 web8 openser[7070]: 
WARNING:sl:sl_send_reply: I won't send a rep
ly for ACK!! Dec 22 00:45:08 web8 openser[7070]: DEBUG:tm:UNREF_UNSAFE: 
after is 0 Dec 22 00:45:08 web8 openser[7070]: DEBUG:destroy_avp_list: 
destroying list 0x0 Dec 22 00:45:08 web8 openser[7070]: receive_msg: 
cleaning up Dec 22 00:45:09 web8 openser[7072]: SIP Reply  (status): 
Dec 22 00:45:09 web8 openser[7069]: SIP Reply  (status): Dec 22 
00:45:09 web8 openser[7072]:  version: <SIP/2.0> Dec 22 00:45:09 web8 
openser[7069]:  version: <SIP/2.0> Dec 22 00:45:09 web8 openser[7072]:  
status:  <100> Dec 22 00:45:09 web8 openser[7069]:  status:  <100> Dec 
22 00:45:09 web8 openser[7072]:  reason:  <Trying> Dec 22 00:45:09 web8 
openser[7069]:  reason:  <Trying> Dec 22 00:45:09 web8 openser[7072]: 
parse_headers: flags=2 Dec 22 00:45:09 web8 openser[7069]: 
parse_headers: flags=2 Dec 22 00:45:09 web8 openser[7072]: Found param 
type 232, <branch> = <z9hG4bK913
a.1a665075.0>; state=6 Dec 22 00:45:09 web8 openser[7069]: Found param 
type 232, <branch> = <z9hG4bK913
a.1a665075.0>; state=6 Dec 22 00:45:09 web8 openser[7072]: Found param 
type 234, <received> = <66.224.2
0.38>; state=16 Dec 22 00:45:09 web8 openser[7069]: Found param type 
234, <received> = <66.224.2
0.38>; state=16 Dec 22 00:45:09 web8 openser[7072]: end of header 
reached, state=5 Dec 22 00:45:09 web8 openser[7069]: end of header 
reached, state=5 Dec 22 00:45:09 web8 openser[7072]: parse_headers: Via 
found, flags=2 Dec 22 00:45:09 web8 openser[7069]: parse_headers: Via 
found, flags=2 Dec 22 00:45:09 web8 openser[7072]: parse_headers: this 
is the first via Dec 22 00:45:09 web8 openser[7069]: parse_headers: 
this is the first via Dec 22 00:45:09 web8 openser[7072]: After 
parse_msg... Dec 22 00:45:09 web8 openser[7069]: After parse_msg... Dec 
22 00:45:09 web8 openser[7072]: forward_reply: found module nathelper, 
passi
ng reply to it Dec 22 00:45:09 web8 openser[7069]: forward_reply: found 
module nathelper, passi
ng reply to it Dec 22 00:45:09 web8 openser[7072]: parse_headers: 
flags=20 Dec 22 00:45:09 web8 openser[7069]: parse_headers: flags=20 
Dec 22 00:45:09 web8 openser[7072]: Found param type 235, <rport> = 
<63658>; sta
te=6 Dec 22 00:45:09 web8 openser[7069]: Found param type 235, <rport> 
= <63658>; sta
te=6 Dec 22 00:45:09 web8 openser[7072]: Found param type 232, <branch> 
= <z9hG4bKc8e
bcfd3f11e821e>; state=16 Dec 22 00:45:09 web8 openser[7069]: Found 
param type 232, <branch> = <z9hG4bKc8e
bcfd3f11e821e>; state=16 Dec 22 00:45:09 web8 openser[7069]: end of 
header reached, state=5 Dec 22 00:45:09 web8 openser[7072]: end of 
header reached, state=5 Dec 22 00:45:09 web8 openser[7069]: 
parse_headers: Via found, flags=20 Dec 22 00:45:09 web8 openser[7072]: 
parse_headers: Via found, flags=20 Dec 22 00:45:09 web8 openser[7069]: 
parse_headers: this is the second via Dec 22 00:45:09 web8 
openser[7072]: parse_headers: this is the second via Dec 22 00:45:09 
web8 openser[7069]: DEBUG:parse_to:end of header reached, state=
10 Dec 22 00:45:09 web8 openser[7072]: DEBUG:parse_to:end of header 
reached, state=
10 Dec 22 00:45:09 web8 openser[7069]: DBUG:parse_to: display={}, 
ruri={sip:1707874
9006 at 66.224.20.38} Dec 22 00:45:09 web8 openser[7072]: DBUG:parse_to: 
display={}, ruri={sip:1707874
9006 at 66.224.20.38} Dec 22 00:45:09 web8 openser[7069]: DEBUG: 
get_hdr_field: <To> [32]; uri=[sip:17
078749006 at 66.224.20.38]  Dec 22 00:45:09 web8 openser[7072]: DEBUG: 
get_hdr_field: <To> [32]; uri=[sip:17
078749006 at 66.224.20.38]  Dec 22 00:45:09 web8 openser[7069]: DEBUG: to 
body [<sip:17078749006 at 66.224.20.3
8>^M ] Dec 22 00:45:09 web8 openser[7072]: DEBUG: to body 
[<sip:17078749006 at 66.224.20.3
8>^M ] Dec 22 00:45:09 web8 openser[7069]: get_hdr_field: cseq <CSeq>: 
<45348> <INVITE>

Dec 22 00:45:09 web8 openser[7072]: get_hdr_field: cseq <CSeq>: <45348> 
<INVITE>

Dec 22 00:45:09 web8 openser[7069]: forward_reply: found module tm, 
passing repl
y to it Dec 22 00:45:09 web8 openser[7072]: forward_reply: found module 
tm, passing repl
y to it Dec 22 00:45:09 web8 openser[7069]: DEBUG: t_check: msg id=2 
global id=1 T start
=0xffffffff Dec 22 00:45:09 web8 openser[7072]: DEBUG: t_check: msg 
id=1 global id=0 T start
=0xffffffff Dec 22 00:45:09 web8 openser[7069]: parse_headers: flags=22 
Dec 22 00:45:09 web8 openser[7072]: parse_headers: flags=22 Dec 22 
00:45:09 web8 openser[7069]: parse_headers: flags=8 Dec 22 00:45:09 
web8 openser[7072]: parse_headers: flags=8 Dec 22 00:45:09 web8 
openser[7069]: DEBUG: t_reply_matching: hash 41753 label 14
59971745 branch 0 Dec 22 00:45:09 web8 openser[7072]: DEBUG: 
t_reply_matching: hash 41753 label 14
59971745 branch 0 Dec 22 00:45:09 web8 openser[7069]: 
DEBUG:tm:REF_UNSAFE: after is 1 Dec 22 00:45:09 web8 openser[7069]: 
DEBUG: t_reply_matching: reply matched (T=0x
284a8c20)! Dec 22 00:45:09 web8 openser[7072]: DEBUG:tm:REF_UNSAFE: 
after is 2 Dec 22 00:45:09 web8 openser[7069]: DEBUG: t_check: msg id=2 
global id=2 T end=0
x284a8c20 Dec 22 00:45:09 web8 openser[7072]: DEBUG: t_reply_matching: 
reply matched (T=0x
284a8c20)! Dec 22 00:45:09 web8 openser[7069]: DEBUG:tm:reply_received: 
org. status uas=408
, uac[0]=408 local=0 is_invite=1) Dec 22 00:45:09 web8 openser[7072]: 
DEBUG: t_check: msg id=1 global id=1 T end=0
x284a8c20 Dec 22 00:45:09 web8 openser[7069]: 
DEBUG:tm:t_should_relay_response: T_code=408
, new_code=100 Dec 22 00:45:09 web8 openser[7072]: 
DEBUG:tm:reply_received: org. status uas=408
, uac[0]=408 local=0 is_invite=1) Dec 22 00:45:09 web8 openser[7069]: 
DEBUG:tm:relay_reply: branch=0, save=0, rela
y=-1 Dec 22 00:45:09 web8 openser[7069]: WARNING: set_timer for 1 list 
called on a "d
etached" timer -- ignoring: 0x284a8d4c Dec 22 00:45:09 web8 
openser[7072]: DEBUG:tm:t_should_relay_response: T_code=408
, new_code=100 Dec 22 00:45:09 web8 openser[7069]: 
DEBUG:tm:UNREF_UNSAFE: after is 1 Dec 22 00:45:09 web8 openser[7072]: 
DEBUG:tm:relay_reply: branch=0, save=0, rela
y=-1 Dec 22 00:45:09 web8 openser[7069]: DEBUG:destroy_avp_list: 
destroying list 0x0 Dec 22 00:45:09 web8 openser[7069]: receive_msg: 
cleaning up Dec 22 00:45:09 web8 openser[7072]: WARNING: set_timer for 
1 list called on a "d
etached" timer -- ignoring: 0x284a8d4c Dec 22 00:45:09 web8 
openser[7072]: DEBUG:tm:UNREF_UNSAFE: after is 0 Dec 22 00:45:09 web8 
openser[7072]: DEBUG:destroy_avp_list: destroying list 0x0 Dec 22 
00:45:09 web8 openser[7072]: receive_msg: cleaning up Dec 22 00:45:09 
web8 openser[7073]: DEBUG: timer routine:0,tl=0x284a8ce0 next=0x
0 Dec 22 00:45:09 web8 openser[7073]: DEBUG: timer 
routine:4,tl=0x284a8cd0 next=0x
0 -- 702-874-3833
1-866-553-3833


Quoting Bogdan-Andrei Iancu <bogdan at voice-system.ro>:

> Hi Stefan,
>
> also, with the latest stable version, you can use dynamic credentials 
> via AVPs. See:
>    http://www.openser.org/docs/modules/1.1.x/uac.html#AUTH-REALM-AVP-ID
>
> regards,
> bogdan
>
> Stefano Capitanio wrote:
>
>>
>> yes, if each provider have a different realm for authentication 
>> OpenSER can find the right credentials:
>>
>> modparam("uac","credential","user1:realm1:passwd1")
>>
>> modparam("uac","credential","user2:realm2:passwd2")
>>
>> ...and so on...
>>
>>
>> Stefano
>>
>> Zac Amsler ha scritto:
>>
>>> Hmmm.
>>>
>>> This is an interesting thing.
>>> My question is.. I have 4 providers that require authentication. Is 
>>> this doable?
>>>
>>> Thanks!
>>>
>>> Cheers,
>>> Zac Amsler, Network Operations Sur-Tel Communications, Inc. & NetIQ 
>>> Systems, LLC
>>> * US48, Canada, A-Z Wholesale Termination.
>>> * US48 Origination, Toll Free DIDs.
>>> * Toll Free Termination (FREE).
>>>
>>>
>>>
>>> Stefano Capitanio wrote:
>>>
>>>> Hi,
>>>>
>>>> see example 6.2:
>>>> http://www.voice-sistem.ro/docs/uac/ar01s06.html
>>>>
>>>> Bye,
>>>> Stefano
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at openser.org
>>> http://openser.org/cgi-bin/mailman/listinfo/users
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at openser.org
>> http://openser.org/cgi-bin/mailman/listinfo/users
>>
>
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>









More information about the sr-users mailing list