Hello, i'm trying to set BLF on my snom 320 phone to get notification on function key for certain extension as well registered against kamailio. Any other info i can provide except the following one and as well i want to exuse me, as i'm pretty noob to all this, and my question might be silly, but after hours in front of google i found no solution :)
I always get that:
after pua_set_publish() ** 3(7825) ERROR: *** cfgtrace: c=[/usr/local/etc/kamailio/kamailio.cfg] l=791 a=16 n=if 3(7825) ERROR: *** cfgtrace: c=[/usr/local/etc/kamailio/kamailio.cfg] l=780 a=41 n=isflagset 3(7825) ERROR: *** cfgtrace: c=[/usr/local/etc/kamailio/kamailio.cfg] l=799 a=16 n=if 3(7825) ERROR: *** cfgtrace: c=[/usr/local/etc/kamailio/kamailio.cfg] l=791 a=25 n=save 3(7825) ERROR: pua [send_publish.c:578]: New PUBLISH and no body found- invalid request 3(7825) ERROR: pua_usrloc [ul_publish.c:326]: while sending publish 3(7825) ERROR: pua_usrloc [ul_publish.c:327]: TEST: type & UL_CONTACT_UPDATE is 2, and error is -1 (^^^ This line was added by me into module as i saw related thread and the patch solution, though it never meets condition and fails to insert from there as well.) 3(7825) ERROR: *** cfgtrace: c=[/usr/local/etc/kamailio/kamailio.cfg] l=799 a=2 n=exit
my configs are : in BLF i set
in cfg i have
alias="SERV_IP" listen=udp:SERV_IP port=5060
loadmodule "db_mysql.so"
loadmodule "mi_fifo.so" loadmodule "kex.so" loadmodule "tm.so" loadmodule "tmx.so" loadmodule "sl.so" loadmodule "rr.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "siputils.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "ctl.so" loadmodule "cfg_rpc.so" loadmodule "mi_rpc.so" loadmodule "acc.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "alias_db.so" loadmodule "speeddial.so"
...
modparam("usrloc", "db_url", DBURL) modparam("usrloc", "db_mode", 3) modparam("usrloc", "use_domain", MULTIDOMAIN) ...
modparam("presence", "db_url", DBURL) modparam("presence", "subs_db_mode" , 3 ) #modparam("presence", "publ_cache", 0) modparam("presence", "expires_offset", 300) modparam("presence", "max_expires", 3600) #modparam("presence", "force_active", 1) modparam("presence", "db_update_period", 10) modparam("presence", "server_address", "sip:SERV_IP:5060")
modparam("presence_xml", "db_url", DBURL) modparam("presence_xml", "force_active", 1) #modparam("presence_dialoginfo", "force_single_dialog", 1)
modparam("pua", "db_url" ,DBURL ) modparam("pua", "db_mode", 2) modparam("pua", "db_table", "pua") #modparam("pua", "outbound_proxy", "sip:SERV_IP") modparam("pua", "min_expires", 10) modparam("pua", "default_expires", 3600) modparam("pua", "update_period", 60) modparam("pua_usrloc", "default_domain", "SERV_IP")
request_route {
if(method=="NOTIFY") { xlog(" pua_update_contact $rm from $fu (IP:$si:$sp) \n");
if(!pua_update_contact()) xlog("pua update failed \n");
}
# per request initial checks route(REQINIT);
# NAT detection route(NATDETECT);
# CANCEL processing if (is_method("CANCEL")) { if (t_check_trans()) t_relay(); exit; }
# handle requests within SIP dialogs route(WITHINDLG);
### only initial requests (no To tag)
t_check_trans();
# authentication route(AUTH);
route(SPEEDDIAL);
# record routing for dialog forming requests (in case they are routed) # - remove preloaded route headers remove_hf("Route"); if (is_method("INVITE|SUBSCRIBE")) record_route();
# account only INVITEs if (is_method("INVITE")) { setflag(FLT_ACC); # do accounting }
# dispatch requests to foreign domains route(SIPOUT);
### requests for my local domains
# handle presence related requests route(PRESENCE);
# handle registrations route(REGISTRAR);
if ($rU==$null) {
# request with no Username in RURI sl_send_reply("484","Address Incomplete"); exit; }
# dispatch destinations to PSTN route(PSTN);
route(DISPATCH);
# user location service route(LOCATION);
route(RELAY); }
route[RELAY] {
# enable additional event routes for forwarded requests # - serial forking, RTP relaying handling, a.s.o. if (is_method("INVITE|SUBSCRIBE")) { t_on_branch("MANAGE_BRANCH"); t_on_reply("MANAGE_REPLY"); } if (is_method("INVITE")) { t_on_failure("MANAGE_FAILURE"); }
if (!t_relay()) { sl_reply_error(); } exit; }
# Per SIP request initial checks route[REQINIT] { #!ifdef WITH_ANTIFLOOD # flood dection from same IP and traffic ban for a while # be sure you exclude checking trusted peers, such as pstn gateways # - local host excluded (e.g., loop to self) if(src_ip!=myself) { if($sht(ipban=>$si)!=$null) { # ip is already blocked xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n"); exit; } if (!pike_check_req()) { xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n"); $sht(ipban=>$si) = 1; exit; } } #!endif
if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; }
if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; } }
# Handle requests within SIP dialogs route[WITHINDLG] { if (has_totag()) { # sequential request withing a dialog should # take the path determined by record-routing if (loose_route()) { route(DLGURI); if (is_method("BYE")) { setflag(FLT_ACC); # do accounting ... setflag(FLT_ACCFAILED); # ... even if the transaction fails } else if ( is_method("ACK") ) { # ACK is forwarded statelessy route(NATMANAGE); } else if ( is_method("NOTIFY") ) { # Add Record-Route for in-dialog NOTIFY as per RFC 6665. record_route();
} route(RELAY); } else { if (is_method("SUBSCRIBE") && uri == myself) { # in-dialog subscribe requests route(PRESENCE); exit; } if ( is_method("ACK") ) { if ( t_check_trans() ) { # no loose-route, but stateful ACK; # must be an ACK after a 487 # or e.g. 404 from upstream server t_relay(); exit; } else { # ACK without matching transaction ... ignore and discard exit; } } sl_send_reply("404","Not here"); } exit; } }
# Handle SIP registrations route[REGISTRAR] {
if (is_method("REGISTER")) { xlog("pua_set_publish()\n");
if(!pua_set_publish()) xlog("set publish failed \n");
xlog(" after pua_set_publish()\n"); if(isflagset(FLT_NATS)) { setbflag(FLB_NATB); # uncomment next line to do SIP NAT pinging ## setbflag(FLB_NATSIPPING); }
#pua_set_publish(); if (!save("location")) { sl_reply_error(); xlog("save location failed \n");
}
exit;
} }
# USER location service route[LOCATION] {
#!ifdef WITH_SPEEDIAL
if(uri=~"sip:[0-9]{2}@.*")
xlog("speeddials\n");
# search for short dialing - 2-digit extension if($rU=~"^[0-9][0-9]$") if(sd_lookup("speed_dial")) route(SIPOUT); #!endif
#!ifdef WITH_ALIASDB # search in DB-based aliases if(alias_db_lookup("dbaliases")) route(SIPOUT); #!endif
$avp(oexten) = $rU; if (!lookup("location")) { $var(rc) = $rc; route(TOVOICEMAIL); t_newtran(); switch ($var(rc)) { case -1: case -3: send_reply("404", "Not Found"); exit; case -2: send_reply("405", "Method Not Allowed"); exit; } }
# when routing via usrloc, log the missed calls also if (is_method("INVITE")) { setflag(FLT_ACCMISSED); } }
# Presence server route route[PRESENCE] { if(!is_method("PUBLISH|SUBSCRIBE")) return;
# search for short dialing - 2-digit extension if($rU=~"^[0-9][0-9]$") sd_lookup("speed_dial");
route(SPEEDDIAL);
xlog("PUBLISH|SUBSCRIBE");
sl_send_reply("100","trying"); if (!t_newtran()) { sl_reply_error(); exit; }; append_to_reply("Contact: sip:82.80.18.100:5060\r\n"); if(is_method("PUBLISH")) { xlog("handle publish here\n");
handle_publish(); t_release(); } else if( is_method("SUBSCRIBE")) { handle subscribe here \n");
handle_subscribe(); t_release(); } exit; }
# Authentication route route[AUTH] { #!ifdef WITH_AUTH
#!ifdef WITH_IPAUTH if((!is_method("REGISTER")) && allow_source_address()) { # source IP allowed return; } #!endif
if (is_method("REGISTER") || from_uri==myself) { # authenticate requests if (!auth_check("$fd", "subscriber", "1")) { auth_challenge("$fd", "0"); exit; } # user authenticated - remove auth header if(!is_method("REGISTER|PUBLISH")) consume_credentials(); } # if caller is not local subscriber, then check if it calls # a local destination, otherwise deny, not an open relay here if (from_uri!=myself && uri!=myself) { sl_send_reply("403","Not relaying"); exit; }
#!endif return; }
# Caller NAT detection route route[NATDETECT] { #!ifdef WITH_NAT force_rport(); if (nat_uac_test("19")) { if (is_method("REGISTER")) { fix_nated_register(); } else { add_contact_alias(); } setflag(FLT_NATS); } #!endif return; }
# RTPProxy control route[NATMANAGE] { #!ifdef WITH_NAT if (is_request()) { if(has_totag()) { if(check_route_param("nat=yes")) { setbflag(FLB_NATB); } } } if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;
rtpproxy_manage();
if (is_request()) { if (!has_totag()) { add_rr_param(";nat=yes"); } } if (is_reply()) { if(isbflagset(FLB_NATB)) { add_contact_alias(); } } #!endif return; }
# URI update for dialog requests route[DLGURI] { #!ifdef WITH_NAT if(!isdsturiset()) { handle_ruri_alias(); } #!endif return; }
# Routing to foreign domains route[SIPOUT] { if (!uri==myself) { append_hf("P-hint: outbound\r\n"); route(RELAY); } }
# PSTN GW routing route[PSTN] { .......
return; }
# XMLRPC routing
route[XMLRPC] { .... } #!endif
# route to voicemail server route[TOVOICEMAIL] { ...... return; }
# manage outgoing branches branch_route[MANAGE_BRANCH] { xdbg("new branch [$T_branch_idx] to $ru\n"); route(NATMANAGE); }
# manage incoming replies onreply_route[MANAGE_REPLY] { xdbg("incoming reply\n"); if(status=~"[12][0-9][0-9]") route(NATMANAGE); }
# manage failure routing cases failure_route[MANAGE_FAILURE] { route(NATMANAGE);
if (t_is_canceled()) { exit; }
#!ifdef WITH_BLOCK3XX # block call redirect based on 3xx replies. if (t_check_status("3[0-9][0-9]")) { t_reply("404","Not found"); exit; } #!endif
}
route[SPEEDDIAL] { ..... return; }
....