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(&quot;location&quot;)){</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>xlog(&quot; Relying&quot;);</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(&quot;Storing MSILO_MESSAGE $ru-$tu-$ou&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>m_store(&quot;$ru&quot;);</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(&quot;202&quot;, &quot;Accepted&quot;);</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: </div><div><div>route[REGISTRAR] {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;REGISTER&quot;))</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 </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(&quot;location&quot;,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&#39;s offline messages</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if (m_dump(&quot;$fu&quot;)){</div><div>
<span class="Apple-tab-span" style="white-space:pre">                        </span>xlog(&quot;MSILO: offline messages for $fu dumped - if they were  \n&quot;);</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(&quot;MSILO: no offline messages dumped\n&quot;);</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 MSILO: offline messages for {offlined contact} dumped - if they were  </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 &quot;msilo.so&quot;</div><div>
<br></div><div>modparam(&quot;msilo&quot;,&quot;db_url&quot;,DBURL)</div><div>modparam(&quot;msilo&quot;,&quot;from_address&quot;,&quot;sip:registrar@MY DOMAIN&quot;)</div><div>modparam(&quot;msilo&quot;,&quot;contact_hdr&quot;,&quot;Contact: registrar@MY DOMAIN:5060;msilo=yes\r\n&quot;)</div>
<div>modparam(&quot;msilo&quot;,&quot;content_type_hdr&quot;,&quot;Content-Type: text/plain\r\n&quot;)</div><div>modparam(&quot;msilo&quot;,&quot;offline_message&quot;,&quot;***$rU***$rb***&quot;)</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 </div>
<div>compiled on 14:43:47 Jul 19 2012 with gcc 4.5.2</div></div><div><br></div><div><br></div>