Dear users,
I'm using kamailio in the following scenario:
1. A call comes in and is checked against PDT module. From this module
depend from the prefix I'm getting back the domain which is used as the
dialplan group.
2. After that the call is checked against Dialplan module using the previous
value from PDT as Dialplan dpid. From the Dialplan module i get back the
the attributes values.
3. these attributes values are user in the dispathcher module where I
continue with failover scenarios.
Also the script is working with a radius for accounting purposes.
This scenario works perfecttly and it is still in a testing mode.
An the problem:
I'm running SIPP against this scenario and until the CPS is 5 everything
looks good. The scenario for SIPP is the simplest. uac and uas default. Uac
is sending a call and uas is answering.
When the CPS goes above 9 then I have call failures. All the statistics are
going down.
I'm cheking for CPU load or other system problems but I don't see anything
strange. Does anyone understand why this is happening?
I'm attachng the 2 routes that i'm using:
test values in order to understand the script
*PDT value = 1 (used for the dialplan group)
Dialplan value = 100.101.102.#
Dispatcher values:
100 = 10.0.0.5
101 = 10.0.0.6
102 = 10.0.0.7*
Thank you in advance
Alex
route[7] {
if(prefix2domain("2", "0")) {
$var(dial_grp) = $(rd{s.int});
if(dp_translate("$var(dial_
grp)", "$rU/$rU"))
{
$var(i) = 0;
while($(avp(s:dest){s.select,$var(i),.})!="#")
{
$avp(s:dstgrp) =
$(avp(s:dest){s.select,$var(i),.}{s.int});
$var(i) = $var(i) + 1;
}
$avp(s:user) = $rU;
if(ds_select_domain("$avp(s:dstgrp)", "4"))
{
if($(ru{uri.param,prefix})!=null)
{
$ru = "sip:" +
$(ru{uri.param,prefix}) + $rU + "@" + $rd;
} else {
$ru = "sip:" + $rU +
"@" + $rd;
}
$avp(s:dstgrp) = null;
t_on_failure("2");
t_relay();
exit;
}
}
sl_send_reply("404", "No route found");
exit;
}
}
failure_route[2] {
if(t_was_cancelled()) {
exit;
}
if(t_check_status("4[0-9][0-9]|5[0-9][0-9]"))
{
if(ds_next_domain())
{
if($(ru{uri.param,prefix})!=null)
{
$ru = "sip:" + $(ru{uri.param,prefix}) + $avp(s:user) + "@"
+ $rd;
} else {
$ru = "sip:" + $avp(s:user) + "@" + $rd;
}
t_on_failure("2");
append_branch();
t_relay();
exit;
} else {
if($avp(s:dstgrp)!=null)
{
if(ds_select_domain("$avp(s:dstgrp)", "4"))
{
if($(ru{uri.param,prefix})!=null)
{
$ru = "sip:" + $(ru{uri.param,prefix}) +
$avp(s:user) + "@" + $rd;
} else {
$ru = "sip:" + $avp(s:user) + "@" + $rd;
}
$avp(s:dstgrp) = null;
t_on_failure("2");
append_branch();
t_relay();
exit;
}
} else {
t_reply("444", "No more tries for you!");
}
}
}
Hey,
I have noticed that when I try to use kamctl to reboot phones, it comes
back with simply "400". I tried using the fifo interface and the phone
asked the server to identify itself using the phone's username and password.
How do people generally use the kamctl to reboot phones?
Thanks,
David
Hello,
I plan to release Kamailio 3.0, hopefully today, if no outstanding issue
out there. Ending of last week, I managed to get debian packaging
working (tested on Ubuntu) using Andrei's new Makefile system, with
module groups.
If you are aware of issues you want fixed before 3.0RC3, drop an email.
This is supposed to be latest RC before full 3.0.0 release.
Cheers,
Daniel
--
Daniel-Constantin Mierla
* http://www.asipto.com/
Hey,
I am having some issues with NAT and I think the issue is with Bflags.
So I have some clarifications :
1. What does the flags column in location contain?
2. What does the cflags column in location contain ?
I am guessing that cflags represents the bflags? So if I have a value of
192, does that mean flags 7 and 8 are set ? This confuses me cause I set
flags 6 and 7.
Do the bflags appear magically in the routing scripts or is there a
command that I have to execute for the script to have the bflags?
Thanks!
David
Hi,
I'm a longtime asterisk user, needing to scale up. I figured it
would be smart to use and develop for sip-router, because it'll come out
soon.
But I've never used one of ser, openser, or siblings, and now I'm
confused by the download links on you site.
I see kamailio_3.0, master, sr_3.0, stable and unstable top level
directories. What should I download? What's the diference between
them?
Thanks,
Antonio
Hi,
I need help for registering with iptel.org
I have created one user called hitechabdul with iptel.org
When I am trying to register with this domain, It is returing error *401
Unauthorized *with *Warning 392 : Noisy Feedback Tells*
please find attached ethereal packet and help me to resolve this problem.
The details filling with register message :
username : hitechabdul
password : xxxxxx
Domain Name : iptel.org
Other than this Is I have to given any more data ?
--
thanks & regards,
Abdul Khadar Shaik,
Hey,
I need to rewrite the $tU variable on a packet before it is relayed. It
is ok if the change is only on the relayed packet and the $tU variable
change. The important thing is that I modify the To header, it seems
that rewritting $tU would be the easiest.
I know that user agents do not like this changing, but I am changing it
on an intermediary server and when the reply comes back, I change it
back to the original value.
Thanks!
David
Hi All,
I am trying to integrate Kamailio (1.5.2-notls) into our existing
database structure using a view for the subscriber table and using the
location table to store the registration information.
I am successfully able to register a phone using this method.
One of our requirements is to set an "outboundproxy" and
"outboundproxyport" parameter in the location table for a particular sip
account (username). I am trying to do this with the sqlops module.
What I have come across though is that when the registration information
is saved to the location table the username is stored in lower case. So
when my sqlops query is run against the username it does not match.
Is there a way to tell the usrloc module to store the username in the
same case as it is received?
For example, in the subscriber table I have view defined that for my
user account returns the following information:
-------------
select * from subscriber where username = 'BruceNW9440';
username | domain | password | ha1
| ha1b
-------------+---------------+------------+----------------------------------+----------------------------------
BruceNW9440 | 10.10.10.10 | 00minger00 |
1f2d688f65be04a61cab36a1fb3f426a | 6529d45f5c418daf35be7b3dd4a858cb
(1 row)
-------------
Now, if I check the above against the location table:
--------------
select * from location where username = 'BruceNW9440';
0 rows returned
--------------
If I run the same query using "brucenw9440" as the username (lowercase)
then the correct information is returned.
I have the following log line in my kamailio configuration script:
xlog("L_INFO","Username: $au, OutboundProxy: $Ri, OutboundProxyPort: $Rp");
The details of this log appear correct when it is logged:
Dec 9 14:21:03 ibis /opt/kamailio/sbin/kamailio[16972]: [ID 197553
local0.info] Username: BruceNW9440, OutboundProxy: 10.10.10.10,
OutboundProxyPort: 5060
However, when my sqlopt query is run it does not find a match because of
the incorrect case:
sql_query("bfl", "UPDATE location SET outboundproxy = '$Ri',
outboundproxyport = '$Rp' WHERE username = '$au'", "res");
I've had a read through the usrloc module documentation and I cannot
seem to find a reference to any options that will preserve the case. I
also cannot find if there is a parameter to save('location') that will
preserve the case. I cant seem to find a reference to the save()
function on the wiki. I must be missing something small.
We have some sip usernames that are case sensitive so any help in being
able to resolve this would be greatly appreciated.
Thanks
Bruce
According to the 1.5.x TM module documentation,
DNS failover is triggered by a 503 reply or a timeout.
When using SRV records, it appears a 503 triggers the failure_route instead.
Given:
host -t srv _sip._udp.voip.example.net_sip._udp.voip.example.net has SRV record 1 0 5060
fast-server.example.net.
_sip._udp.voip.example.net has SRV record 2 0 5060
slow-server.example.net.
On an invite to voip.example.net, if fast-server does not respond within
"fr_timer" seconds, t_relay fires off a serial branch (t_on_branch is
triggered) and the invite goes to slow-server.
If fast-server responds with a 503, the t_on_failure route is triggered
instead, and the invite is not sent on to slow-server.
If its not a bug in the module, does anyone have clues of how to coax
the next DNS SRV record out of the t_on_failure route? Or what can be
done to get t_relay to consume the 503?
Thanks!