Hi list,
I'm struggling to learn OpenSER, but I've come across a weird problem:
OpenSER seems to be a slow starter! My initial tests on the internal
network worked fine, but now I've moved the server to our hosting and
public IPs. I'm testing using OpenSER 1.3.0 and a Twinkle softphone on
Linux. The softphone is behind NAT, OpenSER absolutely not.
When I start OpenSER, Twinkle cannot register and returns the error
"you are not registered". However, looking at the traffic using tcpdump,
everything looks normal to me.
The weird thing is that if I leave the software running for about an
hour or so, everything starts working. After the timeout period (default
3600 seconds), the phone re-registers and succeeds? It's not just a
startup problem - if I try to re-register after having both systems
running for, say, 15 min., it still doesn't work. But after about an
hour, it works.
What am I doing wrong here?
Actually, it only works sort of: If I use 'openserctl online', it still
claims that no users are registered even though the softphone claims to
be. If I switch on MySQL support, the database isn't updated.
I'm testing with a very basic setup - no authentication at all, as a
first measure I simply want the phone to register - and to be able to se
it reflected in the database.
I must be missing something - but what?
My present openser.cfg is here - but I've tried several other tutorial
configs:
listen=udp:x.x.x.x:5060
debug=6
fork=no
log_stderror=yes
check_via=no
dns=no
rev_dns=no
mpath="/lib64/openser/modules"
loadmodule "xlog.so"
loadmodule "mysql.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "nathelper.so"
modparam("usrloc", "db_mode", 3)
modparam("usrloc", "db_url",
"mysql://openser:xxxxxxxx@mysql.mydomain.org/openser")
modparam("rr", "enable_full_lr", 1)
modparam("nathelper", "natping_interval", 10)
route {
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too many hops");
exit;
}
if (msg:len > max_len) {
sl_send_reply("513", "Message overflow");
exit;
}
if (method!="REGISTER") {
record_route();
}
if (loose_route()) {
route(1);
exit;
}
if (uri!=myself) {
route(1);
exit;
}
if (method=="ACK") {
route(1);
exit;
}
if (method=="REGISTER") {
route(2);
exit;
}
lookup("aliases");
if (uri!=myself) {
route(1);
exit;
}
if (!lookup("location")) {
sl_send_reply("404", "User not found");
exit;
}
route(1);
}
route[1] {
if (!t_relay()) {
sl_reply_error();
}
}
route[2] {
xdbg("Reached route[2]\n");
if (!save("location")) {
xdbg("Error in save(location)\n");
sl_reply_error();
}
}
Regards,
Lars
--
Lars Skjærlund
Skovengen 111
2980 Kokkedal
Denmark
Tel.: +45 70 25 88 10
http://www.skjaerlund.dk/lars