Hi Marrold, Thanks for the quick response, and sorry for the late reply.
Yes, I'm using TSILO module and I adapted your code into mine easily. Message flow seems as expected. ACK is sent successfully to the incoming 486 response and a new INVITE is sent to the mobile client when it is registered. However if the mobile client doesn't answer or rejects the call (possibly in all other failure cases) failure_route is not executed again. This makes sense to me. As far as I know, failure_route is executed after all branches fail. In this case the new branch had not yet been added when 486 was received. How do I make failure_route executed for the new branch? What do you think? On Mon, Aug 16, 2021 at 7:22 PM Marrold <[email protected]> wrote: > Hi Koray, > > I'm glad you mentioned this, I'm currently working on a similar > configuration and tested your scenario and found the same thing. I'm > assuming you're using TSILO? > > I just quickly tried this in the failure_route and it appears to be > working but I'm sure there's still some optimisations to be done. It might > need adapting for your situation. > > if ($sht(tsilo=>active_branch::$tU) && > t_check_status("[456][0-9][0-9]") ) { > t_drop_replies(); > t_suspend(); > xlog("suspended transaction [$T(id_index):$T(id_label)] > $fU => $rU\n"); > $sht(tsilo=>suspended::$tU) = "" + $T(id_index) + ":" + > $T(id_label); > exit; > } > > One obvious issue currently is when the mobile client registers it resumes > the suspended transaction and does another look up on the location table, > and then sends a new INVITE to the device that previously rejected the > call. If that's a user that manually rejected a call it will be quite > annoying. > > I'll follow up tomorrow when I've spent more time on this, but hopefully > it gets you started. > > Thanks > Matthew > > > > On Mon, Aug 16, 2021 at 4:04 PM Koray Vatansever < > [email protected]> wrote: > >> Hi, >> >> I have a problem with the following scenario: >> >> I have web and mobile sip clients for the same username. >> >> If both clients are idle, INVITE is forked and both clients ring. >> If web client is busy and mobile client is online and registered, the >> mobile client rings and the caller hears ringback tone. >> If web client is busy and mobile client is offline, before the mobile >> client receives push notification and registers, web client sends 486 busy >> response and caller hears busy tone. >> >> In this last scenario, I want to wait some time for the mobile client to >> register and ring. >> I tried to drop 486 response in onreply_route[x], but I found that final >> responses cannot be dropped in this route. >> I dropped 486 in reply_route, but I couldn't send an ACK for this >> transaction. >> >> Is there a way to implement this scenario? >> >> I would appreciate if you have any suggestions. >> >> Thanks, >> Koray >> >> __________________________________________________________ >> Kamailio - Users Mailing List - Non Commercial Discussions >> * [email protected] >> Important: keep the mailing list in the recipients, do not reply only to >> the sender! >> Edit mailing list options or unsubscribe: >> * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users >> > __________________________________________________________ > Kamailio - Users Mailing List - Non Commercial Discussions > * [email protected] > Important: keep the mailing list in the recipients, do not reply only to > the sender! > Edit mailing list options or unsubscribe: > * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users >
__________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions * [email protected] Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
