Hi Vitalii,

Yes, that is correct. The idea is you cannot do async() ops in the branch route as this type of route is strongly interfering with the SIP signaling - branch route is triggered when a new branch is set out (as a result of a t_relay) and no signaling operations are allowed (as you are already doing a signaling op). Still, this limitation is valid only for async calls () as async is based on the transaction status. But, you can do regular sync() queries from the branch route, with a risk of blocking the processes of opensips.

The spiraling (as you described) is also a valid option, but you need to be a bit careful with the script logic to be sure you do not mix the loops :)

Regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
  http://www.opensips-solutions.com
OpenSIPS Bootcamp 2018
  http://opensips.org/training/OpenSIPS_Bootcamp_2018/

On 11/02/2018 12:04 PM, Vitalii Aleksandrov wrote:
Hi Bogdan,

Ok. Let's say I have 5 branches and before calling t_relay() want to iterate over branches and do some async() action. From my understanding if I do something via async() it will suspend the whole transaction with all branches and if I need the same action for every branch it will create a big PDD because all async() calls will be done sequentially.

As a workaround I think I can send all branches to myself (spiral call) and receiving those INVITEs from loopback opensips will create a separate transaction for every destination so I'll be able to run async() tasks in parallel and forward a call to every destination immediately its async() task is finished.


Hi Vitalii,

The async() statement can be used only in REQUEST route. Still, whatever you need to do in terms of async query from branch route can also be done from request route.

Regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
  http://www.opensips-solutions.com
OpenSIPS Bootcamp 2018
  http://opensips.org/training/OpenSIPS_Bootcamp_2018/

On 11/01/2018 01:46 PM, Vitalii Aleksandrov wrote:
Hi,

I'm a bit new to opensips, while have some experience with kamailio.

Trying to figure out whether it's possible to use async() statement from branch_route[].

From the documentation I understood that async() functionality is tightly connected to the TM module and creates some context attached to a transaction, suspends it and resumes a transaction on an event. If said above is correct I suppose calling async() from a branch_route[] to suspend only one branch and expect that other branches will continue their normal execution is not what it was designed for..

Is there any way to forward a branch while other branches wait for an async event or i/o?

Would appreciate any ideas.


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to