<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    <div class="moz-cite-prefix">On 9/5/12 5:12 PM, Stoyan Mihaylov
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAPScudZABNSPWa+eL1sORoP7P8dNqfaMDo1Of7c8B+7A98a7MA@mail.gmail.com"
      type="cite">Following examples, I tried to add processing of
      offline messages.
      <div>Structure of my system is:</div>
      <div>SIP client
        &lt;-&gt;Kamailio&lt;-&gt;Asterisk&lt;-&gt;Kamailio&lt;-&gt;SIP
        client</div>
      <div>Where Kamailio in above is same server, but SIP clients are
        different.</div>
      <div>Now I have no problems with audio, video calls and messages,
        if both clients are online.</div>
      <div>All messages received from client are sent to Asterisk, where
        I can or not process them and then I forward back to Kamailio.
        When messages came from Asterisk server, then they are sent
        directly to end user.</div>
      <div>Sending messages to end user - I call this function, only if
        message come from allow_source_address():</div>
      <div>
        <div>route[MSILO_MESSAGE]{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if
          (lookup("location")){</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>xlog("
          Relying");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>t_relay();</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}else{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>xlog("Storing
          MSILO_MESSAGE $ru-$tu-$ou");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>m_store("$ru");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>t_relay();</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>t_reply("202",
          "Accepted");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>};</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>exit();</div>
        <div>}</div>
      </div>
      <div>When client register:&nbsp;</div>
      <div>
        <div>route[REGISTRAR] {</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if
          (is_method("REGISTER"))</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if(isflagset(FLT_NATS))</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>setbflag(FLB_NATB);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>#
          uncomment next line to do SIP NAT pinging&nbsp;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>##
          setbflag(FLB_NATSIPPING);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if
          (!save("location",0x04))</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>sl_reply_error();</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>#
          MSILO - dumping user's offline messages</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if
          (m_dump("$fu")){</div>
        <div>
          <span class="Apple-tab-span" style="white-space:pre"> </span>xlog("MSILO:
          offline messages for $fu dumped - if they were &nbsp;\n");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}else{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>xlog("MSILO:
          no offline messages dumped\n");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>};</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>exit;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div>}</div>
      </div>
      <div>I am sending message to offline contact, and I see record in
        silo table. Record looks perfect.</div>
      <div>Then offline contact become online, I see in debug&nbsp;MSILO:
        offline messages for {offlined contact} dumped - if they were &nbsp;</div>
      <div>But client do not receive nothing.</div>
      <div>In case all contacts are online, then message go to contact,
        and is not stored in silo.</div>
      <div>Setup of msilio is:</div>
      <div>
        <div>loadmodule "msilo.so"</div>
        <div>
          <br>
        </div>
        <div>modparam("msilo","db_url",DBURL)</div>
        <div>modparam("msilo","from_address",<a class="moz-txt-link-rfc2396E" href="sip:registrar@MYDOMAIN">"sip:registrar@MY DOMAIN"</a>)</div>
        <div>modparam("msilo","contact_hdr","Contact: registrar@MY
          DOMAIN:5060;msilo=yes\r\n")</div>
        <div>modparam("msilo","content_type_hdr","Content-Type:
          text/plain\r\n")</div>
        <div>modparam("msilo","offline_message","***$rU***$rb***")</div>
      </div>
      <div>By the way - I receive in Asterisk offline message.</div>
      <div>Obviously, I am doing something wrong, but I cant understand
        what.</div>
      <div>Any help is welcome.</div>
      <div>Version of Kamailio is:</div>
      <div>
        <div>#~&gt; kamailio -V</div>
        <div>version: kamailio 3.2.3 (x86_64/linux) 59f87e</div>
        <div>flags: STATS: Off, USE_IPV6, USE_TCP, USE_TLS, TLS_HOOKS,
          USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM,
          SHM_MMAP, PKG_MALLOC, DBG_QM_MALLOC, USE_FUTEX,
          FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER,
          USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES</div>
        <div>ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144,
          MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT
          PKG_SIZE 4MB</div>
        <div>poll method support: poll, epoll_lt, epoll_et, sigio_rt,
          select.</div>
        <div>id: 59f87e&nbsp;</div>
        <div>compiled on 14:43:47 Jul 19 2012 with gcc 4.5.2</div>
      </div>
      <div><br>
      </div>
    </blockquote>
    &nbsp;any reason you are calling t_relay() after m_store()?<br>
    <br>
    Watch the sip traffic with ngrep, I expect they are looping in the
    first step and you don't handle that properly in the config?<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
Kamailio Advanced Training, Berlin, Nov 5-8, 2012 - <a class="moz-txt-link-freetext" href="http://asipto.com/u/kat">http://asipto.com/u/kat</a>
Kamailio Advanced Training, Miami, USA, Nov 12-14, 2012 - <a class="moz-txt-link-freetext" href="http://asipto.com/u/katu">http://asipto.com/u/katu</a></pre>
  </body>
</html>