Hi, Everything was working great on my system (0.9.3)
and then all I did was recompile mysql.so due to a new
mysql build.
Now all my clients which were registering before fail
to register and I get the error that the "domain name"
is unresolvable (dns/rev_dns is set to no). In my
messages file I get:
ERROR: mk_proxy: could not resolve hostname: "abc.com"
Jul 25 21:15:03 xxxx /usr/local/sbin/ser[16896]:
ERROR: uri2proxy: bad host name in URI
<sip:w7optics.com>
Jul 25 21:15:03 xxxx /usr/local/sbin/ser[16896]:
ERROR: t_forward_nonack: failure to add branches
Please help!
Thanks
Dave
____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs
Your help will be so grateful.
Sent: Thursday, July 21, 2005 4:21 PM
Subject: [Serusers] Radius Howto
Hi list,
I have tried to configure radius function, and do step by step with the document "ser_radius".
When I go to the step----root@/usr/local/src# radiusd -X, there produce a lot of debugging information and the following Errors
--------------------------------------
Errors reading dictionary: dict_init: /usr/local/etc/raddb/dictionary[16]: Couldn't open dictionary "/usr/local/etc/radiusclient/dictionary.ser": No such file or directory
Errors reading radiusd.conf
--------------------------------------
I check the /usr/local/etc/radiusclient/dictionary.ser, it is got from the CVS web interface as described in 2.3 section of "ser_radius".
And then, I add "#" before "$INCLUDE /usr/local/etc/radiusclient/dictionary.ser" in the file "/usr/local/etc/raddb/dictionary", and run "root@/usr/local/src# radiusd -X" again, there shows no errors.
I don't know how to solve this problem and how to add the dictionary.ser into the default dictionary.
Thanks!
--------------------------------------------------------------------------------
_______________________________________________
Serusers mailing list
Serusers(a)iptel.org
http://mail.iptel.org/mailman/listinfo/serusers
hello,
i upgraded my ser 0.8.14 to ser 0.9.3 and when i run "serctl monitor" i encountered this error
/usr/local/sbin/serctl: syntax error at line 923: `attempt=$' unexpected
pls help.
I am a newbie, and I have tried to read the docs.
I am trying to do authorization.
I have already setup mysql with ser_mysql.sh
and uncommented the lines in ser.cfg.
It seems that mysql has the domain localtel.ath.cx in the database,
but ngrep still shows "Too many hops".
U 201.135.14.132:5060 -> 192.168.2.193:5060
SIP/2.0 483 Too Many Hops..Via: SIP/2.0/UDP
201.145.17.115:5060;branch=z9hG4bK0re2im9ZQ9PVFf1A
..From: "667" <sip:667@201.135.14.132>;tag=HFSYYxJvpgDbM3S9..To: "667"
<sip:667@201.135.14.132
>;tag=b27e1a1d33761e85846fc98f5f3a7e58.35d8..Call-ID:
vVKJwLiGYFQcbkKy@201.145.17.115..CSeq: 2
9436 REGISTER..Server: Sip EXpress router (0.9.3
(i386/linux))..Content-Length: 0..Warning: 39
2 201.135.14.132:5060 "Noisy feedback tells: pid=2022
req_src_ip=201.135.14.132 req_src_port=
5060 in_uri=sip:201.135.14.132 out_uri=sip:201.135.14.132 via_cnt==18"....
At ser machine, I tried
zeus:~# serctl domain show
500 command 'domain_dump' not available
zeus:~# serctl domain add localtel.ath.cx
MySql password:
ERROR 1062 at line 1: Duplicate entry 'localtel.ath.cx' for key 1
SQL Error
zeus:~# serctl domain show
500 command 'domain_dump' not available
zeus:~#
What can be wrong?
Thanks in advance.
Sebastian.
On Monday 25 July 2005 01:47 pm, Michael Ulitskiy wrote:
> > > > > > No, you don't need hundreds of children, usualy 16 is maximu what you
> > > > > > need. Newer ser versions contain connection pool, so each child will
> > > > > > open exactly one database connection and it will be reused across
> > > > > > modules.
> > > > >
> > > > > What about processing that involves slow DNS queries? I thought this would
> > > > > eat up available workers quite quickly and further processing will be blocked?
> > > > > Please correct me if I'm wrong.
> > > >
> > > > You can install local (running on the same host as the proxy) DNS
> > > > cache that can also cache negative entries (those that do not exist or
> > > > cannot be looked up), such as dnsmasq. This way the slow query would
> > > > be performed once and subsequent queries will be answered from the
> > > > cache.
> > > > Moreover, kernel maintains a queue of incoming SIP requests and it
> > > > will continue receiving SIP messages even if all processes are
> > > > blocked. The kernel starts to drop incoming SIP messages once the
> > > > queue is full.
> > >
> > > Well, I guess it's not a solution. It's a workaround at best. I'd vote for something
> > > apache-like. I.e. master process monitoring the number of idle children and forking
> > > additional as needed. Thanks anyway.
> >
> > Why not start them all from the beginning? Is not like they will eat a
> > lot of resources...
Just because sometimes it's hard to predict how many of them will be needed.
And if you grow over time you have a good chance not to notice that the number
needs to be increased until you get a whole lot of customers complaints. And
with this approach it's hard to deal with temporary activity spikes. And probably
more :)
> > > Also could you (or someone) give me a rough estimation on what is the optimal
> > > number of children to serve let's say 10k sip clients as registrar and proxy with
> > > moderately complex config file, but not involving DNS queries? INVITEs may involve
> > > several database queries to a dedicated database server. I understand that the
> > > question is rather vague, I'm just interested in a rough estimation and some
> > > real-world numbers people use.
> >
> > Try it and if you can see packets in the socket buffers (netstat)
> > increase the number of children.
> > I would use 20-50 children. The "lots of db connections" problem is
> > solved when using connection pools (or by increasing the maximum
> > connections in mysql's config :-)).
>
Unfortunately this is not an option for postgres at the moment or I'd definitely
go for it. This is actually was the real reason I started this thread. Due to lack
of connection pool for postgres I need to determine the optimal number
of children. Thanks for the estimation.
> > You could use also tune the dns timeout (limit the maximum time a dns
> > request can take). For this you would need either unstable (grep NEWS
> > for dns_) or to edit your /etc/resolv.conf and set the timeout and
> > attempts options and remove the search or domain lines.
> >
> > Andrei
Michael
I think I am missing something very simple here, but I cannot figure out
what it is.
I have DID aliases set up for SER usernames, so when a call comes in as
2125551234, I do a lookup("aliases") which results in something like
username1(a)sip.mydomain.com. Username1 is the registered SER user. the
numbers are all aliases.
I also have a secondary aliases table called "hunt" which I use to store
call hunt sequences. The problem is that if a user does not pick up the
phone and SER calls failure_route[1], I get a hunt for both 2125551234 and
username1. Shouldn't my revert_uri() in failure_route cause the hunt lookup
to be done on 2125551234 only?
route[7] is called from failure_route only, so there isn't any other logic
that might put me into these route blocks. Included below the call routing
blocks are some syslogs.
If anyone could offer a suggestion or has seen anything like this and could
let me know what they did to solve it I would be eternally grateful.
Thank you.
Dan
###
# Hunt (8), but only on 404/408/486
route[7] {
if (t_check_status("408") | # Timeout
t_check_status("404") | # Not found
t_check_status("486")) # Busy
{
route(8);
} else {
xlog("L_NOTICE",
"%ci: r7: hunt but not 404/408/486\n");
};
}
###
# Hunt to the next number in sequence
route[8] {
# See if we're in a hunt
if(search("P-hint: pt-hunt")) {
xlog("L_NOTICE",
"wanted to hunt, but hunt already in progress\n");
break;
};
# Assumes URI has been revert and prefixed with "h#-"
# Also assumes t_on_failure (#+1) has been set.
xlog("L_NOTICE", "%ci: r8: hunt on %ru\n");
if(lookup("hunt")) {
xlog("L_NOTICE",
"%ci: r8: hunt changed URI to %ru, relaying\n");
append_branch();
append_hf("P-hint: pt-hunt\r\n");
setflag(9);
t_relay();
break;
} else {
xlog("L_NOTICE",
"%ci: r8: no further hunts, giving up\n");
};
}
failure_route[1] { revert_uri(); prefix("h1-"); t_on_failure("2"); route(7);
}
failure_route[2] { revert_uri(); prefix("h2-"); t_on_failure("3"); route(7);
}
failure_route[3] { revert_uri(); prefix("h3-"); t_on_failure("4"); route(7);
}
failure_route[4] { revert_uri(); prefix("h4-"); t_on_failure("5"); route(7);
}
failure_route[5] { revert_uri(); prefix("h5-"); t_on_failure("6"); route(7);
}
failure_route[6] { revert_uri(); prefix("h6-"); t_on_failure("7"); route(7);
}
failure_route[7] { revert_uri(); prefix("h7-"); t_on_failure("8"); route(7);
}
failure_route[8] { revert_uri(); prefix("h8-"); t_on_failure("9"); route(7);
}
failure_route[9] { xlog("L_ERR", "too many hunts!\n"); }
Jul 18 11:17:23 sip /usr/sbin/ser[18279]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.18<http://192.168.32.18>]
INVITE sip:2125551234@192.168.32.30:5060
Jul 18 11:17:23 sip /usr/sbin/ser[18279]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18: alias lookup changed uri
to sip:username1@sip.mydomain.com
Jul 18 11:17:23 sip /usr/sbin/ser[18279]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.30<http://192.168.32.30>]
INVITE sip:username1@sip.mydomain.com
Jul 18 11:17:53 sip /usr/sbin/ser[18301]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18: r8: hunt on
sip:h1-username1@sip.mydomain.com
Jul 18 11:17:53 sip /usr/sbin/ser[18301]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18: r8: hunt changed URI to
sip:2125551234@vm.packetalk.net, relaying
Jul 18 11:17:53 sip /usr/sbin/ser[18301]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18: r8: hunt on
sip:h1-2125551234@192.168.32.30:5060
Jul 18 11:17:53 sip /usr/sbin/ser[18301]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18: r8: hunt changed URI to
sip:2125551234@vm.packetalk.net, relaying
Jul 18 11:17:53 sip /usr/sbin/ser[18281]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.30<http://192.168.32.30>]
CANCEL sip:username1@sip.mydomain.com
Jul 18 11:17:55 sip /usr/sbin/ser[18295]: ERROR: t_should_relay_response:
status rewrite by UAS: stored: 408, received: 200
Jul 18 11:17:56 sip /usr/sbin/ser[18285]: ERROR: t_should_relay_response:
status rewrite by UAS: stored: 408, received: 200
Jul 18 11:17:57 sip /usr/sbin/ser[18295]: ERROR: t_should_relay_response:
status rewrite by UAS: stored: 408, received: 200
Jul 18 11:17:58 sip /usr/sbin/ser[18289]: ERROR: t_should_relay_response:
status rewrite by UAS: stored: 408, received: 200
Jul 18 11:17:59 sip /usr/sbin/ser[18298]: ERROR: t_should_relay_response:
status rewrite by UAS: stored: 408, received: 200
Jul 18 11:18:00 sip /usr/sbin/ser[18281]: ERROR: t_should_relay_response:
status rewrite by UAS: stored: 408, received: 200
Jul 18 11:18:08 sip /usr/sbin/ser[18280]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.18<http://192.168.32.18>]
CANCEL sip:2125551234@192.168.32.30:5060
Jul 18 11:18:08 sip /usr/sbin/ser[18280]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18: alias lookup changed uri
to sip:username1@sip.mydomain.com
Jul 18 11:18:08 sip /usr/sbin/ser[18289]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.30<http://192.168.32.30>]
ACK sip:username1@sip.mydomain.com
Jul 18 11:18:09 sip /usr/sbin/ser[18285]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.30<http://192.168.32.30>]
ACK sip:username1@sip.mydomain.com
Jul 18 11:18:10 sip /usr/sbin/ser[18289]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.30<http://192.168.32.30>]
ACK sip:username1@sip.mydomain.com
Jul 18 11:18:11 sip /usr/sbin/ser[18298]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.30<http://192.168.32.30>]
ACK sip:username1@sip.mydomain.com
Jul 18 11:18:12 sip /usr/sbin/ser[18298]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.30<http://192.168.32.30>]
ACK sip:username1@sip.mydomain.com
Jul 18 11:18:13 sip /usr/sbin/ser[18287]:
29FF0A3-F6D611D9-938FBF07-9CC1DBD7(a)192.168.32.18:
[192.168.32.30<http://192.168.32.30>]
ACK sip:username1@sip.mydomain.com
Hello,
There is a new MediaProxy release available. Beside bug fixes the
most noticeable improvement is the possibility to change the source
of the party who signs in after an initial 183.
Changes from version 1.3.1 to 1.4.2
-----------------------------------
- Accept the called party to change the media streams sign-in address.
This is useful for example if the "200 OK" comes from a different
device
that the "183 Session in progress" (for example if a call to PSTN
that
is not answered is then diverted to an announcement on a media
server).
- Do not allow the control stream traffic to reset the idle timeout
counter.
- Handle the situation where mediaproxy sometimes died with an
OverflowError.
This happened very rarely and the error backtrace doesn't make
much sense.
it seems like an obscure error in the underlying C select module
and the
OverflowError exception only seems to hide the real issue).
- The proxy dispatcher will test that a mediaproxy is actually
responding
to commands, not only that the mediaproxy TCP port is open, before
choosing
a mediaproxy to use. This solves issues with systems that die and
stop
responding, while the TCP port is still kept open by the operating
system.
- Improved and optimized the mediaproxy server lookup procedure.
- Fixed bug with proxy dispatcher never actually running the timer that
expired stale sessions.
- Rewrote the session expiration timer to run in a different thread
at an
interval that can be specified in the configuration. This will
improve
accuracy it as it no longer depends on receiving commands from SER
to run.
- Also report proxy version with the status command to avoid the need
to run
the version command as well when requesting status (if version is
needed).
There is no change required for the SER module or ser.cfg configuration.
To upgrade go to http://mediaproxy.ag-projects.com/
or download the software directly from
http://mediaproxy.ag-projects.com/mediaproxy-1.4.2.tar.gz
Kind regards,
Adrian Georgescu
Hi all,
I have ser running, and everything is working fine.
I tried to use two softphones (x-lite) on the same network - behind a
firewall (NAT).
Both of the clients logs on ok and I can call one from other. The
problem comes when I try to hung up from the caller. After a few
seconds, the caller gets OK from SER BUT callee don't hang up. And SER
don't even terminate the connection (module acc).
I'm using nathelper and rtpproxy.
Here is my ser.cfg (only parts that matter):
loadmodule "/tcnet/ser/lib/ser/modules/nathelper.so"
modparam("registrar", "nat_flag", 6)
# nathelper
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
route{
if (nat_uac_test("19")) {
if (method == "REGISTER" || ! search("^Record-Route:")) {
log (1, "src addressw different than via
header->NAT");
# Try NAT traversal, if the client is symmetrical
fix_nated_contact();
if (method == "INVITE") {
sl_send_reply("", "Client is behind NAT
And Requested a call");
if (fix_nated_sdp("1"))
sl_send_reply("", "Client SDP Replaced");
};
force_rport();
append_hf("P-hint: fixed NAT contact for
request\r\n");
# flag 5 indicates that incoming request is
from NATed client
setflag(5);
};
};
if (uri==myself) {
if (method=="REGISTER") {
if (isflagset(5)) {
# register from nated client.
setflag(6);
};
}
Thank you all.
--
Thomas Storino Britis
TCNet Inf e Telecom LTDA