<div dir="ltr">Hi!<div><br></div><div>Tks for all the comments and descriptions.</div><div>I've seen the pdf ideas and followed most guidelines.</div><div>I've also tried to follow most guidelines from </div><div><a href="https://www.ietf.org/id/draft-ietf-sipcore-sip-push-04.txt">https://www.ietf.org/id/draft-ietf-sipcore-sip-push-04.txt</a>.<br></div><div><br></div><div>My approach is first to use a long expires ;)</div><div>This was to avoid storing the push information in a different table</div><div>as everything is available in the "location" database already.</div><div><br></div><div>As I described, my goal was to discard forwarding to branches</div><div>which has push information in them. However, this is not</div><div>mandatory for me: if the UA is reachable, it will receive the</div><div>INVITE and the push. If the UA is not reachable any more (on SIP)</div><div>it will just receive the push.</div><div><br></div><div>This is working well enough for my needs.</div><div><br></div><div>In my initial experiments, I have tried to use a avops with a preference</div><div>table. But I'm not sure if that database could support many entries for</div><div>the same users. And I was worried about automatic management of</div><div>the expiration of this entry. The "location" database already have expiration</div><div>management and already contains the tokens...</div><div><br></div><div>In your setup, you have a small Expires, but you still send call after</div><div>the contact has expired?... May be the user don't want the call any more...</div><div><br></div><div>As far as I know, after my app is terminated and TCP connection closed</div><div>(or broken), there is no impact in the location database? So UDP/TCP/TLS</div><div>should not make any difference for my setup!</div><div><br></div><div>I understand your warning about TCP: If I have only on TCP branch and it fails</div><div>I guess I will have a fast " I'm terribly sorry, server error occurred (7/SL)" answer</div><div>and no time for my "pushed" app to be already registered. However, I think</div><div>I can sort this out with a trick (for example, a static branch to keep my stuff</div><div>alive?)</div><div><br></div><div>Up to now, the new registration comes before the failure of the broken TCP branch.</div><div>Not sure if I'm lucky or if I can count on this ;(</div><div><br></div><div>Thus... t_suspend and t_continue don't seems to be required at all for me.</div><div>Also, I haven't been able yet to find any advantage to use a different htable.</div><div><br></div><div><br></div><div>Tks</div><div>Aymeric</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-02-09 10:00 GMT+01:00 Vasiliy Ganchev <span dir="ltr"><<a href="mailto:vancecezar@gmail.com" target="_blank">vancecezar@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I am glad that you have something working, but I think you will have some<br>
issues with your approach.<br>
<br>
Some important point regarding push/suspending etc. that I would like to<br>
emphasize and point your attention:<br>
<br>
1.The modern mobile devices - put your SIP app to "sleep" quite fast. The<br>
TCP/TLS connection is closed. (are you using UDP?)<br>
<br>
2. So if your location prevents non-alive registrations to live there you<br>
possibly need:<br>
  - have a long "Expires" in registration. (remember your app is<br>
sleeping/killed most of the time, and is unable to refresh the registration)<br>
<br>
3. When your location has "non alive registration", after t_relay - INVITE<br>
will be forked to all branches (including that "non alive"). How can you<br>
know that the registration is alive?<br>
 - a possible case - is to send push for every call, without paying<br>
attention on "aliveness" of the registration<br>
 Drawback: your app will have to handle case when SIP INVITE and push arrive<br>
at the same time (usually it will by firstly SIP, and in few seconds push)<br>
<br>
So my approach to push in kamailio:<br>
1. use short "Expires", (300s) - to remove non-refreshed registration from<br>
location asap.<br>
<br>
2. store all the necessary push data to "htable".  (while REGISTER<br>
processing)<br>
   (actually I have 2 tables:<br>
     a) extension as a key, and list of instances as a value<br>
     b) instance as a key, and all parameters as a value (here is token,<br>
type, version etc.)<br>
<br>
3. When INVITE comes<br>
 a) make lookup(location)<br>
 b) check if there is something found in location (remember you may have no<br>
registrations, but there still may be devices that support push and can be<br>
reachable)<br>
  b1) NO records in location - t_suspend and push send<br>
  b2) ts_store and relay to alive branches. When REGISTER from push device<br>
comes - ts_append<br>
<br>
So  the answer to your initial question - ts_suspend is never done in<br>
branch_route, as we get there only if there are valid registrations (and<br>
there is no suspend needed)<br>
<br>
Hope my insight helped. Good luck in your pushing.<br>
<br>
and of course most of the text above is not my invention, but it is based on<br>
Daniel/Federico's job. Their presentations are what was my insight when I<br>
developed push in our solution:<br>
<a href="http://www.kamailio.org/events/2014-KamailioWorld/day2/26-Daniel-Constantin.Mierla-Kamailio.cfg-Async.pdf" rel="noreferrer" target="_blank">http://www.kamailio.org/<wbr>events/2014-KamailioWorld/<wbr>day2/26-Daniel-Constantin.<wbr>Mierla-Kamailio.cfg-Async.pdf</a><br>
<a href="http://www.kamailio.org/events/2015-KamailioWorld/Day2/20-Federico.Cabiddu-Kamailio-In-A-Mobile-World.pdf" rel="noreferrer" target="_blank">http://www.kamailio.org/<wbr>events/2015-KamailioWorld/<wbr>Day2/20-Federico.Cabiddu-<wbr>Kamailio-In-A-Mobile-World.pdf</a><br>
<br>
cheers!<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
--<br>
Sent from: <a href="http://sip-router.1086192.n5.nabble.com/Users-f3.html" rel="noreferrer" target="_blank">http://sip-router.1086192.n5.<wbr>nabble.com/Users-f3.html</a><br>
<br>
______________________________<wbr>_________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><img src="http://sip.antisip.com/am48.png">Antisip - <a href="http://www.antisip.com" target="_blank">http://www.antisip.com</a><br></div>
</div>