I was modifying the routing blocks of the tsilo push notifications recipe from Federico Cabiddu and could cause a segfault in kamailio 5.0.3 if due to misconfiguration an ACK reached ts_store().
## modify https://www.kamailio.org/events/2015-KamailioWorld/Day2/20-Federico.Cabiddu-... ## various route blocks will lead to here ## including ACK and INVITE... route[LOCALRELAY) {
## ooops: did not check method is INVITE t_relay(); ts_store(); $sht(vtp=>stored::$rU) = 1; xlog("L_INFO", "stored transaction [$T(id_index):$T(id_label)] $fU => $rU\n"); ## saw an ACK and caused segfault }
If properly checked for INVITE: if (is_method("INVITE")) { /* do tsilo stuff */ } it works.
I'm wondering whether ts_store() should/could be more defensive and show an error like "..not the right context for ts_store().." .
Thanks for you thoughts.
Anthony