Can anyone help please? I was supposed to have this server up and running hours ago and I can't think of anything to do next to help debug this.ThanksOn Wed, Jul 16, 2014 at 7:01 PM, Peter Villeneuve <petervnv1@gmail.com> wrote:I removed the localhost listeners on TCP and UDP, and, as I suspected, Kamailio doesn't seem to like that.Why isn't kamailio sending the message back through the TLS socket?NOTICE: <script>: -------------------------MESSAGE PROCESSING: dumping offline messages ERROR: tm [ut.h:343]: uri2dst2(): no corresponding socket for af 2 ERROR: tm [uac.c:266]: t_uac_prepare(): t_uac: no socket foundOn Wed, Jul 16, 2014 at 4:44 PM, Peter Villeneuve <petervnv1@gmail.com> wrote:
And here's the full routing block. I copied it from someone else on the list that was troubleshooting msilo a while back.Also, I can confirm the message never gets delivered because it remains in msilo DB and kamailio logs shows it trying and trying.####### Routing Logic ######### Main SIP request routing logic# - processing of any incoming SIP request starts with this routeroute {# per request initial checksroute(REQINIT);# NAT detectionroute(NAT);# handle requests within SIP dialogsroute(WITHINDLG);### only initial requests (no To tag)# CANCEL processingif (is_method("CANCEL")){if (t_check_trans())t_relay();exit;}if (is_method("MESSAGE")){log(1,"-------------------------------------------------------->WE HAVE A NEW MESSAGE\n");route(MSILO_MESSAGE);}t_check_trans();# authenticationroute(AUTH);# record routing for dialog forming requests (in case they are routed)# - remove preloaded route headersremove_hf("Route");if (is_method("INVITE|SUBSCRIBE"))record_route();# account only INVITEsif (is_method("INVITE")){setflag(FLT_ACC); # do accounting}# dispatch requests to foreign domainsroute(SIPOUT);### requests for my local domains# handle presence related requestsroute(PRESENCE);# handle registrationsroute(REGISTRAR);if ($rU==$null){# request with no Username in RURIsl_send_reply("484","Address Incomplete");exit;}# dispatch destinations to PSTNroute(PSTN);# user location serviceroute(LOCATION);route(RELAY);}route[RELAY] {#!ifdef WITH_NATif (check_route_param("nat=yes")) {setbflag(FLB_NATB);}if (isflagset(FLT_NATS) || isbflagset(FLB_NATB)) {route(RTPPROXY);}#!endif/* example how to enable some additional event routes */if (is_method("INVITE")) {#t_on_branch("BRANCH_ONE");t_on_reply("REPLY_ONE");t_on_failure("FAIL_ONE");}if (!t_relay()) {sl_reply_error();}exit;}##storing offline messagesroute[MSILO_MESSAGE]{if (lookup("location")){t_on_failure("FAIL_MESSAGE");t_relay();xlog("L_NOTICE","---------------------------------MI: ($mi), MB: ($mb)\n");}else{xlog("L_NOTICE","------------------MESSAGE PROCESSING: location not found, storing offline message ID: ($ru)\n");m_store("$ru");sl_send_reply("202", "ACCEPTED");xlog("L_NOTICE","------------------MESSAGE PROCESSING: location not found, stored offline message ID: ($ru)\n");};exit;};failure_route[FAIL_MESSAGE]{xlog("L_NOTICE","------------------MESSAGE PROCESSING: user cannot be reached, storing offline message ID: ($ou)\n");m_store("$ou");t_reply("202", "ACCEPTED");xlog("L_NOTICE","------------------MESSAGE PROCESSING: user cannot be reached, stored offline message ID: ($ou)\n");exit;}# Per SIP request initial checksroute[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 blockedxdbg("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;}}#!endifif (!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 dialogsroute[WITHINDLG] {if (has_totag()) {# sequential request withing a dialog should# take the path determined by record-routingif (loose_route()) {if (is_method("BYE")) {setflag(FLT_ACC); # do accounting ...setflag(FLT_ACCFAILED); # ... even if the transaction fails}route(RELAY);} else {if (is_method("SUBSCRIBE") && uri == myself) {# in-dialog subscribe requestsroute(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 servert_relay();exit;} else {# ACK without matching transaction ... ignore and discardexit;}}sl_send_reply("404","Not here");}exit;}}# Handle SIP registrationsroute[REGISTRAR] {if (is_method("REGISTER")){if(isflagset(FLT_NATS)){setbflag(FLB_NATB);# uncomment next line to do SIP NAT pingingsetbflag(FLB_NATSIPPING);}if (!save("location"))sl_reply_error();# MSILO - dumping user's offline messagesm_dump();log(1,"-------------------------MESSAGE PROCESSING: dumping offline messages\n");exit;}}# USER location serviceroute[LOCATION] {#!ifdef WITH_ALIASDB# search in DB-based aliasesalias_db_lookup("dbaliases");#!endifif (!lookup("location")) {switch ($rc) {case -1:case -3:t_newtran();t_reply("404", "Not Found");exit;case -2:sl_send_reply("405", "Method Not Allowed");exit;}}# when routing via usrloc, log the missed calls alsoif (is_method("INVITE")){setflag(FLT_ACCMISSED);}}
# Presence server routeroute[PRESENCE] {if(!is_method("PUBLISH|SUBSCRIBE"))return;#!ifdef WITH_PRESENCEif (!t_newtran()){sl_reply_error();exit;};if(is_method("PUBLISH")){handle_publish();t_release();}elseif( is_method("SUBSCRIBE")){handle_subscribe();t_release();}exit;#!endif# if presence enabled, this part will not be executedif (is_method("PUBLISH") || $rU==$null){sl_send_reply("404", "Not here");exit;}return;}# Authentication routeroute[AUTH] {#!ifdef WITH_AUTHif (is_method("REGISTER")){# authenticate the REGISTER requests (uncomment to enable auth)if (!www_authorize("$td", "subscriber")){www_challenge("$td", "0");exit;}if ($au!=$tU){sl_send_reply("403","Forbidden auth ID");exit;}} else {#!ifdef WITH_IPAUTHif(allow_source_address()){# source IP allowedreturn;}#!endif# authenticate if from local subscriberif (from_uri==myself){if (!proxy_authorize("$fd", "subscriber")) {proxy_challenge("$fd", "0");exit;}if (is_method("PUBLISH")){if ($au!=$tU) {sl_send_reply("403","Forbidden auth ID");exit;}} else {if ($au!=$fU) {sl_send_reply("403","Forbidden auth ID");exit;}}consume_credentials();# caller authenticated} else {# caller is not local subscriber, then check if it calls# a local destination, otherwise deny, not an open relay hereif (!uri==myself){sl_send_reply("403","Not relaying");exit;}}}#!endifreturn;}# Caller NAT detection routeroute[NAT] {#!ifdef WITH_NATforce_rport();if (nat_uac_test("19")) {if (method=="REGISTER") {fix_nated_register();} else {fix_nated_contact();}setflag(FLT_NATS);}#!endifreturn;}# RTPProxy controlroute[RTPPROXY] {#!ifdef WITH_NATif (is_method("BYE")) {unforce_rtp_proxy();} else if (is_method("INVITE")){rtpproxy_offer();}if (!has_totag()) add_rr_param(";nat=yes");#!endifreturn;}# Routing to foreign domainsroute[SIPOUT] {if (!uri==myself){append_hf("P-hint: outbound\r\n");route(RELAY);}}# PSTN GW routingroute[PSTN] {#!ifdef WITH_PSTN# check if PSTN GW IP is definedif (strempty($sel(cfg_get.pstn.gw_ip))) {xlog("SCRIPT: PSTN rotuing enabled but pstn.gw_ip not defined\n");return;}# route to PSTN dialed numbers starting with '+' or '00'# (international format)# - update the condition to match your dialing rules for PSTN routingif(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$"))return;# only local users allowed to callif(from_uri!=myself) {sl_send_reply("403", "Not Allowed");exit;}$ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip);route(RELAY);exit;#!endifreturn;}# XMLRPC routing#!ifdef WITH_XMLRPCroute[XMLRPC]{# allow XMLRPC from localhostif ((method=="POST" || method=="GET")&& (src_ip==127.0.0.1)) {# close connection only for xmlrpclib user agents (there is a bug in# xmlrpclib: it waits for EOF before interpreting the response).if ($hdr(User-Agent) =~ "xmlrpclib")set_reply_close();set_reply_no_connect();dispatch_rpc();exit;}send_reply("403", "Forbidden");exit;}#!endif# Sample branch routerbranch_route[BRANCH_ONE] {xdbg("new branch at $ru\n");}# Sample onreply routeonreply_route[REPLY_ONE] {xdbg("incoming reply\n");#!ifdef WITH_NATif ((isflagset(FLT_NATS) || isbflagset(FLB_NATB))&& status=~"(183)|(2[0-9][0-9])") {
rtpproxy_answer();}if (isbflagset("6")) {fix_nated_contact();}#!endif}# Sample failure routefailure_route[FAIL_ONE] {#!ifdef WITH_NATif (is_method("INVITE")&& (isbflagset(FLB_NATB) || isflagset(FLT_NATS))) {unforce_rtp_proxy();}#!endifif (t_is_canceled()) {exit;}# uncomment the following lines if you want to block client# redirect based on 3xx replies.##if (t_check_status("3[0-9][0-9]")) {##t_reply("404","Not found");## exit;##}# uncomment the following lines if you want to redirect the failed# calls to a different new destination##if (t_check_status("486|408")) {## append_branch();## # do not set the missed call flag again## t_relay();##}}On Wed, Jul 16, 2014 at 4:38 PM, Peter Villeneuve <petervnv1@gmail.com> wrote:Thanks for your help Daniel.OK I ngrepped port 5060 and indeed the message tries to get delivered. However it never arrives at the client (1010 in this case).I have added localhost listeners for UDP and TCP, even though all clients register through TLS only (could this be the root of the problem?). I added localhost listeners because I was getting the no socket found error message.Listening onudp: 127.0.0.1:5080tcp: 127.0.0.1:5060tls: 79.my.server.IP1:5061Aliases:tcp: localhost:5060udp: localhost:5080*: my.domain.com:*U 2014/07/16 15:29:14.904285 127.0.0.1:5080 -> 79.my.server.IP1:5060MESSAGE sip:1010@my.domain.com SIP/2.0.Via: SIP/2.0/UDP 127.0.0.1:5080;branch=z9hG4bKcde3.542219f4000000000000000000000000.0.To: <sip:1010@my.domain.com>.From: <sip:1000@my.domain.com>;tag=def4124455da8a0b8e97eafabd028e26-2c30.CSeq: 10 MESSAGE.Call-ID: 16b126996f51d89c-12460@127.0.0.1.Max-Forwards: 70.Content-Length: 58.User-Agent: kamailio (4.1.4 (x86_64/linux)).Date: Wed, 16 Jul 2014 15:22:31 GMT.Content-Type: text/plain..[Offline message - Wed Jul 16 15:22:31 2014] Test 1,2,3On Wed, Jul 16, 2014 at 8:58 AM, Daniel-Constantin Mierla <miconda@gmail.com> wrote:
Hello,
can you watch the sip traffic on the network to see if the sip messages is sent out? You can use ngrep, like:
ngrep -d any -qt -W byline "sip" port 5060
Cheers,
Daniel
On 14/07/14 19:56, Peter Villeneuve wrote:
Hi,
This is most likely a stupid mistake on my route config, but msilo correctly stores messages for offline users, but when they come back online, the message never arrives.
Looking through the debug logs indeed there is an error, with status 408, which suggests kamaiio can't find a route to the user that just logged. Before I spend hours looking through all the routing blocks, perhaps someone more exprienced in kamailio can see the problem right away and offer a solution?
Thanks
DEBUG: msilo [msilo.c:1148]: m_dump(): msg [1-12] for: sip:1010@my.domain.comDEBUG: <core> [io_wait.h:617]: io_watch_del(): DBG: io_watch_del (0x8e3040, 9, -1, 0x10) fd_no=2 calledDEBUG: <core> [tcp_read.c:1437]: release_tcpconn(): releasing con 0x7f61ced1b1b0, state 1, fd=9, id=1DEBUG: <core> [tcp_read.c:1438]: release_tcpconn(): extra_data 0x7f61ced1c4f8DEBUG: <core> [tcp_main.c:3385]: handle_tcp_child(): handle_tcp_child: reader response= 7f61ced1b1b0, 1 from 0DEBUG: <core> [io_wait.h:390]: io_watch_add(): DBG: io_watch_add(0x89ec40, 26, 2, 0x7f61ced1b1b0), fd_no=21DEBUG: <core> [tcp_main.c:3515]: handle_tcp_child(): handle_tcp_child: CONN_RELEASE 0x7f61ced1b1b0 refcnt= 1DEBUG: tm [t_reply.c:1304]: t_should_relay_response(): ->>>>>>>>> T_code=0, new_code=408DEBUG: tm [t_reply.c:2086]: local_reply(): DEBUG: local_reply: branch=0, save=0, winner=0DEBUG: tm [t_reply.c:2123]: local_reply(): DEBUG: local transaction completedDEBUG: tm [t_hooks.c:288]: run_trans_callbacks_internal(): DBG: trans=0x7f61ced1d868, callback type 1024, id 0 enteredDEBUG: msilo [msilo.c:1317]: m_tm_callback(): completed with status 408 [mid: 140058058335472/13]DEBUG: msilo [msilo.c:1325]: m_tm_callback(): message <13> was not sent successfullyDEBUG: msilo [ms_msg_list.c:236]: msg_list_set_flag(): mid:13 fl:8DEBUG: tm [t_reply.c:1304]: t_should_relay_response(): ->>>>>>>>> T_code=0, new_code=408DEBUG: tm [t_reply.c:2086]: local_reply(): DEBUG: local_reply: branch=0, save=0, winner=0DEBUG: tm [t_reply.c:2123]: local_reply(): DEBUG: local transaction completedDEBUG: tm [t_hooks.c:288]: run_trans_callbacks_internal(): DBG: trans=0x7f61ced5f098, callback type 1024, id 0 enteredDEBUG: msilo [msilo.c:1317]: m_tm_callback(): completed with status 408 [mid: 140058058329184/12]DEBUG: msilo [msilo.c:1325]: m_tm_callback(): message <12> was not sent successfullyDEBUG: msilo [ms_msg_list.c:236]: msg_list_set_flag(): mid:12 fl:8
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla - http://www.asipto.com http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users