Hi all.
I am using openSer 1.3 with mySQL. My
problem is that although registration is fast in SIP protocol terms, the
contact binding is written in the ‘location’ table long time after
this contact has received a 200 OK to his registration. So a user could think
that he is registered before he is in the data base.
Could it be a configuration issue?
Can I solve this?
Thanks!
This is my config:
# ----------- global configuration
parameters ------------------------
debug=2
# debug level (cmd line: -dddddddddd)
log_facility=LOG_LOCAL7
fork=yes
log_stderror=no children=4
port=5060
listen=udp:192.168.1.206:5060
listen=tcp:192.168.1.206:5060
# ------------------ module loading
----------------------------------
#set module path
mpath="/usr/local/lib/openser/modules/"
loadmodule "mysql.so"
loadmodule "xlog.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "auth.so"
loadmodule "auth_db.so"
loadmodule "presence.so"
loadmodule "presence_xml.so"
loadmodule "mi_fifo.so"
loadmodule "mi_xmlrpc.so"
# ----------------- setting module-specific
parameters ---------------
modparam("mi_fifo",
"fifo_name", "/tmp/openser_fifo")
# -- usrloc params --
modparam("usrloc",
"db_mode", 2)
# -- auth params --
modparam("auth_db",
"calculate_ha1", yes)
modparam("auth_db",
"password_column", "password")
# -- rr params --
# add value to ;lr param to make some
broken UAs happy
modparam("rr",
"enable_full_lr", 1)
#Agnadido para la Presencia
modparam("presence|usrloc|pua",
"db_url","mysql://openser:openserrw@127.0.0.1/openser")
modparam("presence",
"presentity_table", "presentity")
modparam("presence",
"active_watchers_table", "active_watchers")
modparam("presence",
"watchers_table", "watchers")
modparam("presence",
"clean_period", 100)
modparam("presence",
"max_expires", 3600)
modparam("presence",
"server_address", "sip:192.168.1.206:5060" )
#Presence_XML
modparam("presence_xml",
"db_url","mysql://openser:openserrw@127.0.0.1/openser")
modparam("presence_xml",
"xcap_table", "xcap")
modparam("presence_xml",
"force_active", 1)
modparam("presence_xml",
"integrated_xcap_server", 1)
modparam("presence_xml",
"pidf_manipulation", 1)
modparam("presence_xml",
"pidf_manipulation", 1)
#Mi FIFO
modparam("mi_fifo",
"fifo_name", "/tmp/openser_fifo")
modparam("mi_fifo",
"fifo_mode", 0600)
modparam("mi_fifo",
"fifo_group", 0)
modparam("mi_fifo",
"fifo_group", "root")
modparam("mi_fifo",
"fifo_user", 0)
modparam("mi_fifo",
"fifo_user", "root")
modparam("mi_fifo",
"reply_dir", "/home/openser/tmp/")
#Mi XMLRPC
modparam("mi_xmlrpc", "port", 8080)
modparam("mi_xmlrpc",
"log_file", "/var/log/openser-xmlrpc.log")
modparam("mi_xmlrpc",
"reply_option", 0)
modparam("mi_xmlrpc",
"buffer_size", 8192)
# ------------------------- request
routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if
(!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops. Route filter");
exit;
}
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too big. Route filter");
exit;
}
if (!method=="REGISTER")
record_route();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
};
if
(uri==myself) {
route(1);
};
if
(uri==myself) {
# presence handling
if( is_method("PUBLISH|SUBSCRIBE")){
route(2);
};
if (is_present_hf("MyHeader"))
{
t_relay("192.168.1.111");
exit;
};
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("openserDialcom", "subscriber")) {
www_challenge("openserDialcom", "0");
exit;
};
save("location");
exit;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found in openSer");
exit;
};
append_hf("P-hint: usrloc applied\r\n");
};
route(1);
}
route[1] {
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
exit;
}
route[2]
{
# absorb retransmissions
if (! t_newtran())
{
sl_reply_error();
exit;
};
if(is_method("PUBLISH"))
{
handle_publish();
t_release();
} else if( is_method("SUBSCRIBE")) {
handle_subscribe();
t_release();
};
exit;
}