Hi,
I'm trying to set up OpenSER as a presence server without using force_active (ie to allow authorization). I have two x-lite clients which register with OpenSER and can subscribe to each other. I get a prompt on each client asking whether to authorize the other, but if I click yes no presence info is displayed. If I restart either of the x-lites the authorization message appears again. I know this is because the subs_status field of the watchers table is not being changed from "pending" to "active". If I run a packet capture when starting up x-lite, it sends the 200 OK to the notify provided by OpenSER, but when I click "allow" in the authorization box, nothing is sent to OpenSER.
Has anyone got presence working with x-lite without using force_active? If so, is there anything I'm missing? My config file is as follows:
debug=7 # debug level (cmd line: -dddddddddd) fork=no log_stderror=yes check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) listen=udp:192.168.1.107:5060 children=4
mpath="/usr/local/lib/openser/modules/" loadmodule "mysql.so" loadmodule "sl.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "maxfwd.so " loadmodule "textops.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "presence.so" loadmodule "avpops.so" loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("usrloc", "db_mode", 3) modparam("rr", "enable_full_lr", 1) modparam("presence|^usrloc$", "db_url"," mysql://user:pass@localhost /openser") modparam("presence", "force_active", 0) modparam("presence", "max_expires", 3600) modparam("presence", "server_address", "sip: 192.168.1.107:5060")
route{ if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; }; if (msg:len >= 2048 ) { sl_send_reply("513", "Message too big"); exit; };
if (!is_method("REGISTER")) record_route();
if (loose_route()) { route(1); exit; };
if (!uri==myself) { route(1); exit; };
if (uri==myself) { if (method=="REGISTER") { save("location"); exit; };
if (!lookup("location")) { sl_send_reply("404", "Not Found"); exit; }; }; if( is_method("PUBLISH|SUBSCRIBE")) { route(2); exit; };
route(1); } route[1] { if (!t_relay()) { sl_reply_error(); }; exit; } route[2] { sl_send_reply("100","trying"); 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; }
Thanks in advance,
Sebastian