<div>I'm using non rls presence mode. When a user logs in , he gets the latest presence for all the users correctly who are online at that time, and if any of the online users goes offline I get NOTIFY as well. In this logged in state, if any other user newly logs in , this presentity is not getting NOTIFIED by the presence server. The newly logged in user gets all the presence NOTIFIES (incl his own) correctly. I can reproduce this almost every time. I'm not sure if my config is wrong or there is a bug.</div>
<div> </div>
<div>Please help.</div>
<div> </div>
<div>Here is my config.</div>
<div> </div>
<div>#auto_aliases=no</div>
<div> </div>
<div>loadmodule "db_mysql.so"<br>loadmodule "signaling.so"<br>loadmodule "sl.so"<br>loadmodule "tm.so"<br>loadmodule "rr.so"<br>loadmodule "maxfwd.so"<br>loadmodule "usrloc.so"<br>
loadmodule "registrar.so"<br>loadmodule "textops.so"<br>loadmodule "mi_fifo.so"<br>loadmodule "uri_db.so"<br>loadmodule "uri.so"<br>loadmodule "xlog.so"<br>loadmodule "acc.so"<br>
loadmodule "nathelper.so"<br>loadmodule "mi_xmlrpc.so"</div>
<div>modparam("mi_xmlrpc", "log_file", "/var/log/openser-xmlrpc.log")<br>modparam("mi_xmlrpc", "port", 8000)</div>
<div>modparam("usrloc", "nat_bflag", 6)</div>
<div> </div>
<div># -- nathelper params --<br>modparam("nathelper", "rtpproxy_sock", "udp:localhost:22222")<br>modparam("nathelper", "natping_interval", 30)<br>modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind NAT<br>
modparam("nathelper", "sipping_bflag", 7)<br>modparam("nathelper|registrar", "received_avp", "$avp(i:42)")<br>modparam("nathelper", "sipping_from", "<a href="mailto:sip%3Apinger@sips01.smithmicro.com">sip:pinger@sips01.smithmicro.com</a>")</div>
<div> </div>
<div>loadmodule "auth.so"<br>loadmodule "auth_db.so"<br>loadmodule "alias_db.so"<br><br>#loadmodule "domain.so"<br><br>loadmodule "presence.so"<br>loadmodule "presence_xml.so"<br>
loadmodule "presence_mwi.so"<br>loadmodule "pua.so"<br>loadmodule "pua_mi.so"<br>#loadmodule "rls.so"</div>
<div> </div>
<div># ----------------- setting module-specific parameters ---------------</div>
<div># ----- mi_fifo params -----<br>modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")</div>
<div> </div>
<div># ----- rr params -----<br># add value to ;lr param to cope with most of the UAs<br>modparam("rr", "enable_full_lr", 1)</div>
<div><br># do not append from tag to the RR (no need for this script)<br>modparam("rr", "append_fromtag", 0)</div>
<div> </div>
<div># ----- registrar params -----<br>modparam("registrar", "method_filtering", 1)</div>
<div> </div>
<div># ----- usrloc params -----<br>modparam("usrloc", "db_mode", 0)<br>/* uncomment the following lines if you want to enable DB persistency<br> for location entries */<br>modparam("usrloc", "db_mode", 2)<br>
modparam("usrloc", "db_url",<br> "mysql://opensips:opensipsrw@localhost/opensips")</div>
<div><br>modparam("uri_db", "use_uri_table", 0)<br>modparam("uri_db", "db_url", "")</div>
<div><br># ----- acc params -----<br>/* what sepcial events should be accounted ? */<br>modparam("acc", "early_media", 1)<br>modparam("acc", "report_ack", 1)<br>modparam("acc", "report_cancels", 1)<br>
modparam("acc", "detect_direction", 0)<br>/* account triggers (flags) */<br>modparam("acc", "failed_transaction_flag", 3)<br>modparam("acc", "log_flag", 1)<br>modparam("acc", "log_missed_flag", 2)<br>
/* uncomment the following lines to enable DB accounting also */<br>modparam("acc", "db_flag", 1)<br>modparam("acc", "db_missed_flag", 2)</div>
<div><br>modparam("auth_db", "calculate_ha1", yes)<br>modparam("auth_db", "password_column", "password")<br>modparam("auth_db", "db_url",<br> "mysql://opensips:opensipsrw@localhost/opensips")<br>
modparam("auth_db", "load_credentials", "")</div>
<div><br><br>modparam("alias_db", "db_url",<br> "mysql://opensips:opensipsrw@localhost/opensips")</div>
<div> </div>
<div># ----- presence params -----<br>/* uncomment the following lines if you want to enable presence */<br>modparam("presence|presence_xml", "db_url",<br> "mysql://opensips:opensipsrw@localhost/opensips")<br>
modparam("presence", "server_address", "sip:<a href="http://63.148.166.215:5060">63.148.166.215:5060</a>")<br>modparam("presence", "fallback2db", 1)<br>modparam("presence", "clean_period", 30)</div>
<div> </div>
<div># -- xcap params --<br>modparam("presence_xml", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")<br>modparam("presence_xml", "force_active", 1)<br>modparam("presence_xml", "pidf_manipulation", 1)<br>
modparam("presence_xml", "integrated_xcap_server", 0)<br>modparam("presence_xml", "xcap_server", "localhost:9080")</div>
<div># -- rr params --<br>#modparam("rr", "enable_full_lr", 1)</div>
<div> </div>
<div><br>route {</div>
<div> if (method!="REGISTER") {<br> record_route();<br> };</div>
<div><br> if (loose_route()) {</div>
<div> append_hf("P-Hint: rr-enforced");</div>
<div> if (method=="INVITE") {</div>
<div> if (!proxy_authorize("","subscriber")) {<br> proxy_challenge("","0");<br> return;<br> } else if (!check_from()) {<br> sl_send_reply("403", "Use From=ID");<br>
return;<br> };</div>
<div> consume_credentials();</div>
<div> if (nat_uac_test("19")) {<br> setbflag(6);<br> force_rport();<br> fix_nated_contact();<br> };<br> force_rtp_proxy("l");<br> };</div>
<div> if (method=="ACK") {<br> if (nat_uac_test("19")) {<br> setbflag(6);<br> force_rport();<br> fix_nated_contact();<br> };<br> }</div>
<div> route(1);<br> return;<br>};</div>
<div># -----------------------------------------------------------------<br># Call Type Processing Section<br># -----------------------------------------------------------------<br>if (uri!=myself) {</div>
<div> route(4);<br> route(1);<br> return;<br> };</div>
<div> if (method=="REGISTER") {<br> route(2);<br> return;<br> } else if (method=="SUBSCRIBE") {<br> route(3);<br> return;<br> } else if (method=="PUBLISH") {<br> route(3);<br>
return;<br> };</div>
<div> lookup("aliases");<br> if (uri!=myself) {<br> append_hf("P-Hint: outbound alias");<br> route(4);<br> route(1);<br> return;<br> };</div>
<div> if (!lookup("location")) {<br> sl_send_reply("404", "User Not Found");<br> return;<br> };</div>
<div> append_hf("P-Hint: usrloc applied");<br> route(1);<br>}</div>
<div>route[1] {</div>
<div> # -----------------------------------------------------------------<br> # Default Message Handler<br> # -----------------------------------------------------------------<br> t_on_reply("1");</div>
<div> if (!t_relay()) {<br> if (method=="INVITE" && isbflagset(6)) {<br> unforce_rtp_proxy();<br> };<br> sl_reply_error();<br> };<br>}</div>
<div>route[3] {</div>
<div> if (nat_uac_test("19")) {<br> setbflag(6);<br> }</div>
<div> lookup("aliases");<br> if (uri!=myself) {<br> route(4);<br> route(1);<br> return;<br> };</div>
<div> if (!lookup("location")) {<br> if(method!="SUBSCRIBE" && method!="MESSAGE") {<br> sl_send_reply("404", "User Not Found");<br> return;<br> }<br>
}</div>
<div> route(4);<br> route(1);<br>}</div>
<div>route[4] {</div>
<div>if ( isbflagset(6) )<br>{<br> ## Added for Subscribes<br> if (method=="SUBSCRIBE") {<br> # in-dialog subscribe request<br> # mani added 2 following line to fix subscribe contact<br>
if (nat_uac_test("1")) {<br> fix_nated_contact();<br> }<br> route(5);<br> return;<br> }<br> else if (method=="PUBLISH") {<br> # publish<br>
route(5);<br> return;<br> }<br> fix_nated_contact();<br>}</div>
<div># !! Presence handling<br>route[5]<br>{<br> if (!t_newtran())<br> {<br> sl_reply_error();<br> exit;<br> };</div>
<div> if(is_method("PUBLISH"))<br> {<br> handle_publish();<br> }<br> else<br> if( is_method("SUBSCRIBE"))<br> {<br> handle_subscribe();<br>
}<br> exit;<br>}<br></div>
<div> </div>