Hi, which version of kamailio are you running? According to your description it looks like appending new branch after register it's not working (the call to ts_append). Can you try to add some logs in the script around that line and run kamailio with debug level 3? Then you can share the logs using something like pastebin and I'll have a look.
Regards, Federico On Thu, May 8, 2025, 13:35 bhavikpatel14388--- via sr-dev < sr-dev@lists.kamailio.org> wrote: > Hello, > > I am using exact same logic for which is define in this documentation and > single device its working fine. > > https://www.kamailio.org/events/2015-KamailioWorld/Day2/20-Federico.Cabiddu-Kamailio-In-A-Mobile-World.pdf > > But seems like if multiple registration with same extension, like if > extension 102 logged in mobile as well web. If web device registered and > mobile is not registered with wss, then the Current transaction is not > going to suspend due to its consider like there is only one location entry > on location table.so only one Invite send to web and mobile its going to > send notification but never get Invite, even it is going to register using > push notification. > > So below LOCATION function should be called and sending invite to > registered extension and should be waiting for Other device as well. But in > my case its consider like only one device is there and transaction is not > suspending. > > Could you check and suggest me which part of code need to improve to so i > can make it working with registered device with parallel forking for adding > new branch. > > Here is my code. > > modparam("registrar", "max_contacts", 10) > modparam("registrar", "append_branches", 1) > modparam("registrar", "use_path", 1) > modparam("registrar", "path_mode", 1) > > loadmodule "tsilo.so" > modparam("tsilo", "use_domain", 1) > > modparam("htable", "htable", "vtp=>size=100;autoexpire=30;") > > # append branches or resume the transaction > route[PUSHJOIN] { > $var(hjoin) = 0; > lock("$tU"); > $var(hjoin) = $sht(vtp=>join::$tU); > $var(hstored) = $sht(vtp=>stored::$tU); > $sht(vtp=>join::$tU) = $null; > unlock("$tU"); > if ($var(hjoin)==0) > { > if ($var(hstored)) > ts_append("location", "$tU"); > return; > } > $var(id_index) = $(var(hjoin){s.select,0,:}{s.int}); > $var(id_label) = $(var(hjoin){s.select,1,:}{s.int}); > t_continue("$var(id_index)", "$var(id_label)", "INVRESUME"); > } > > # lookup and relay after resuming transaction > route[INVRESUME] { > lookup("location"); > xlog("L_INFO","[RESUME] rm=$rm ru=$ru du=$du \n"); > t_relay(); > ts_store(); > $sht(vtp=>stored::$rU) = 1; > $sht(vtp=>id_index::$tu) = $null; > $sht(vtp=>id_label::$tu) = $null; > xlog("L_INFO","stored transaction [$T(id_index):$T(id_label)] $fU => > $rU\n"); > } > > route[SUSPEND] { > if ( !t_suspend() ) { > xlog("L_ERROR","[SUSPEND] failed suspending trasaction > [$T(id_index):$T(id_label)]\n"); > send_reply("501", "Suspending error"); > exit; > } > xlog("L_INFO","[SUSPEND] suspended transaction > [$T(id_index):$T(id_label)] $fU=> $rU\n"); > $sht(vtp=>join::$rU) = "" + $T(id_index) + ":" + $T(id_label); > xlog("L_INFO","htable key value [$sht(vtp=>join::$rU)]\n"); > } > > route[SENDPUSH] { > $avp(platform) = $hdr(X-pn-platform); > $var(headers) = "Content-Type: application/json\r\nAuthorization: > Bearer 55466cc-c789-4a48-39c8-219ebaa1512f"; > $var(body) = "{\"user\": \"" + $rU + "\", " + > "\"platform\": \"" + $avp(platform) + > "\"}"; > http_client_query(" > https://handlepush.xxx.com/v2/phone/call/send_notification_kamalio", > "$var(body)", > "$var(headers)", > "$var(res)"); > > } > > # User location service > route[LOCATION] { > > if (!lookup("location")) > { > send_reply("100", "Trying"); > xlog("L_INFO","SUSPENDING TRANASACTION $fU => $rU\n"); > route(SUSPEND); > } > else > { > t_relay(); > ts_store(); > $sht(vtp=>stored::$rU) = 1; > xlog("L_INFO","stored transaction [$T(id_index):$T(id_label)] > $fU=> $rU\n"); > } > route(SENDPUSH); > exit; > } > > > if (is_method("REGISTER") || from_uri==myself) { > xlog("L_INFO", "SAVING TO LOCATIONS $si:$sp\n"); > if (!save("location")) { > sl_reply_error(); > } > route(PUSHJOIN); > exit; > } > > Can you help me to understand why parallel forking not working in this > case ? > > Thanks > _______________________________________________ > Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org > To unsubscribe send an email to sr-dev-le...@lists.kamailio.org > Important: keep the mailing list in the recipients, do not reply only to > the sender! >
_______________________________________________ Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org To unsubscribe send an email to sr-dev-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender!