[SR-Users] Msilo not delivering message (status 408)

Peter Villeneuve petervnv1 at gmail.com
Wed Jul 16 22:37:04 CEST 2014


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.

Thanks


On Wed, Jul 16, 2014 at 7:01 PM, Peter Villeneuve <petervnv1 at 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 found
>
>
>
> On Wed, Jul 16, 2014 at 4:44 PM, Peter Villeneuve <petervnv1 at 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 route
>> route {
>>
>> # per request initial checks
>> route(REQINIT);
>>
>> # NAT detection
>>  route(NAT);
>>
>> # handle requests within SIP dialogs
>> route(WITHINDLG);
>>
>> ### only initial requests (no To tag)
>>
>> # CANCEL processing
>> if (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();
>>
>> # authentication
>>  route(AUTH);
>>
>> # 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);
>>
>> # user location service
>>  route(LOCATION);
>>
>> route(RELAY);
>> }
>>
>>
>> route[RELAY] {
>> #!ifdef WITH_NAT
>> if (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 messages
>> route[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 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()) {
>>  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 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"))
>> {
>>   if(isflagset(FLT_NATS))
>> {
>> setbflag(FLB_NATB);
>>  # uncomment next line to do SIP NAT pinging
>> setbflag(FLB_NATSIPPING);
>> }
>>  if (!save("location"))
>> sl_reply_error();
>> # MSILO - dumping user's offline messages
>>                         m_dump();
>>                         log(1,"-------------------------MESSAGE
>> PROCESSING: dumping offline messages\n");
>>
>>                         exit;
>>  }
>> }
>>
>> # USER location service
>> route[LOCATION] {
>>
>> #!ifdef WITH_ALIASDB
>> # search in DB-based aliases
>>  alias_db_lookup("dbaliases");
>> #!endif
>>
>> if (!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 also
>> if (is_method("INVITE"))
>>  {
>> setflag(FLT_ACCMISSED);
>> }
>> }
>>
>> # Presence server route
>> route[PRESENCE] {
>> if(!is_method("PUBLISH|SUBSCRIBE"))
>> return;
>>
>> #!ifdef WITH_PRESENCE
>> 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;
>> #!endif
>>  # if presence enabled, this part will not be executed
>> if (is_method("PUBLISH") || $rU==$null)
>>  {
>> sl_send_reply("404", "Not here");
>> exit;
>>  }
>> return;
>> }
>>
>> # Authentication route
>> route[AUTH] {
>> #!ifdef WITH_AUTH
>>  if (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_IPAUTH
>> if(allow_source_address())
>> {
>>  # source IP allowed
>> return;
>> }
>> #!endif
>>
>> # authenticate if from local subscriber
>> if (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 here
>>  if (!uri==myself)
>> {
>> sl_send_reply("403","Not relaying");
>>  exit;
>> }
>> }
>> }
>> #!endif
>> return;
>> }
>>
>> # Caller NAT detection route
>> route[NAT] {
>> #!ifdef WITH_NAT
>> force_rport();
>>  if (nat_uac_test("19")) {
>> if (method=="REGISTER") {
>> fix_nated_register();
>>  } else {
>> fix_nated_contact();
>> }
>> setflag(FLT_NATS);
>>  }
>> #!endif
>> return;
>> }
>>
>> # RTPProxy control
>> route[RTPPROXY] {
>> #!ifdef WITH_NAT
>> if (is_method("BYE")) {
>> unforce_rtp_proxy();
>> } else if (is_method("INVITE")){
>>  rtpproxy_offer();
>> }
>> if (!has_totag()) add_rr_param(";nat=yes");
>> #!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] {
>> #!ifdef WITH_PSTN
>> # check if PSTN GW IP is defined
>>  if (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 routing
>> if(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$"))
>>  return;
>>
>> # only local users allowed to call
>> if(from_uri!=myself) {
>>  sl_send_reply("403", "Not Allowed");
>> exit;
>> }
>>
>> $ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip);
>>
>> route(RELAY);
>>  exit;
>> #!endif
>>
>> return;
>> }
>>
>> # XMLRPC routing
>> #!ifdef WITH_XMLRPC
>> route[XMLRPC]
>> {
>> # allow XMLRPC from localhost
>> if ((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 router
>> branch_route[BRANCH_ONE] {
>> xdbg("new branch at $ru\n");
>> }
>>
>> # Sample onreply route
>> onreply_route[REPLY_ONE] {
>> xdbg("incoming reply\n");
>> #!ifdef WITH_NAT
>>  if ((isflagset(FLT_NATS) || isbflagset(FLB_NATB))
>> && status=~"(183)|(2[0-9][0-9])") {
>>
>>  rtpproxy_answer();
>> }
>> if (isbflagset("6")) {
>>  fix_nated_contact();
>> }
>> #!endif
>> }
>>
>> # Sample failure route
>> failure_route[FAIL_ONE] {
>> #!ifdef WITH_NAT
>> if (is_method("INVITE")
>> && (isbflagset(FLB_NATB) || isflagset(FLT_NATS))) {
>>  unforce_rtp_proxy();
>> }
>> #!endif
>>
>> if (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")) {
>> ## sethostport("192.168.2.100:5060");
>>  ## append_branch();
>> ## # do not set the missed call flag again
>>  ## t_relay();
>> ##}
>> }
>>
>>
>> On Wed, Jul 16, 2014 at 4:38 PM, Peter Villeneuve <petervnv1 at 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 on
>>>              udp: 127.0.0.1:5080
>>>              tcp: 127.0.0.1:5060
>>>              tls: 79.my.server.IP1:5061
>>> Aliases:
>>>              tcp: localhost:5060
>>>              udp: localhost:5080
>>>              *: my.domain.com:*
>>>
>>> U 2014/07/16 15:29:14.904285 127.0.0.1:5080 -> 79.my.server.IP1:5060
>>> MESSAGE sip:1010 at my.domain.com SIP/2.0.
>>> Via: SIP/2.0/UDP 127.0.0.1:5080
>>> ;branch=z9hG4bKcde3.542219f4000000000000000000000000.0.
>>> To: <sip:1010 at my.domain.com>.
>>> From: <sip:1000 at my.domain.com
>>> >;tag=def4124455da8a0b8e97eafabd028e26-2c30.
>>> CSeq: 10 MESSAGE.
>>> Call-ID: 16b126996f51d89c-12460 at 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,3
>>>
>>>
>>> On Wed, Jul 16, 2014 at 8:58 AM, Daniel-Constantin Mierla <
>>> miconda at 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 at my.domain.com
>>>> DEBUG: <core> [io_wait.h:617]: io_watch_del(): DBG: io_watch_del
>>>> (0x8e3040, 9, -1, 0x10) fd_no=2 called
>>>> DEBUG: <core> [tcp_read.c:1437]: release_tcpconn(): releasing con
>>>> 0x7f61ced1b1b0, state 1, fd=9, id=1
>>>>  DEBUG: <core> [tcp_read.c:1438]: release_tcpconn():  extra_data
>>>> 0x7f61ced1c4f8
>>>> DEBUG: <core> [tcp_main.c:3385]: handle_tcp_child(): handle_tcp_child:
>>>> reader response= 7f61ced1b1b0, 1 from 0
>>>> DEBUG: <core> [io_wait.h:390]: io_watch_add(): DBG:
>>>> io_watch_add(0x89ec40, 26, 2, 0x7f61ced1b1b0), fd_no=21
>>>> DEBUG: <core> [tcp_main.c:3515]: handle_tcp_child(): handle_tcp_child:
>>>> CONN_RELEASE  0x7f61ced1b1b0 refcnt= 1
>>>> DEBUG: tm [t_reply.c:1304]: t_should_relay_response(): ->>>>>>>>>
>>>> T_code=0, new_code=408
>>>> DEBUG: tm [t_reply.c:2086]: local_reply(): DEBUG: local_reply:
>>>> branch=0, save=0, winner=0
>>>> DEBUG: tm [t_reply.c:2123]: local_reply(): DEBUG: local transaction
>>>> completed
>>>> DEBUG: tm [t_hooks.c:288]: run_trans_callbacks_internal(): DBG:
>>>> trans=0x7f61ced1d868, callback type 1024, id 0 entered
>>>>  DEBUG: 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
>>>> successfully
>>>> DEBUG: msilo [ms_msg_list.c:236]: msg_list_set_flag(): mid:13 fl:8
>>>> DEBUG: tm [t_reply.c:1304]: t_should_relay_response(): ->>>>>>>>>
>>>> T_code=0, new_code=408
>>>> DEBUG: tm [t_reply.c:2086]: local_reply(): DEBUG: local_reply:
>>>> branch=0, save=0, winner=0
>>>> DEBUG: tm [t_reply.c:2123]: local_reply(): DEBUG: local transaction
>>>> completed
>>>> DEBUG: tm [t_hooks.c:288]: run_trans_callbacks_internal(): DBG:
>>>> trans=0x7f61ced5f098, callback type 1024, id 0 entered
>>>>  DEBUG: 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
>>>> successfully
>>>> DEBUG: msilo [ms_msg_list.c:236]: msg_list_set_flag(): mid:12 fl:8
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>>
>>>> --
>>>> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>>
>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>>> sr-users at lists.sip-router.org
>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140716/65113508/attachment.html>


More information about the sr-users mailing list