Thank you Joshua. From: asterisk-dev <asterisk-dev-boun...@lists.digium.com> On Behalf Of Joshua C. Colp Sent: Wednesday, December 9, 2020 10:27 AM To: Asterisk Developers Mailing List <asterisk-dev@lists.digium.com> Subject: Re: [asterisk-dev] session channel locks
On Wed, Dec 9, 2020 at 12:02 PM Dan Cropp <d...@amtelco.com<mailto:d...@amtelco.com>> wrote: We are working on a patch for the REFER support and have a question on whether a lock is needed or not. In chan_pjsip.c function xfer_client_on_evsub_state, code is processing the REFER-NOTIFY subscription. It gets an ast_sip_session reference, then it acquires a ast_channel reference. Should we make the code bump the lock count for the session’s channel while we use it? Unlocking when done using it? Is it safe to assume the channel will not be deleted while this routine is running? Obviously, the safest approach is to increment/decrement the reference count while using, but is that the necessary/preferred approach? The PJSIP implementation in Asterisk doesn't heavily use locks. Instead it approaches things from a serializer perspective - that is ensuring that things related to a dialog/session can't be done in multiple threads at the same time. To that end the xfer_client_on_evsub_state function should allocate a structure with the appropriate information and queue it up using ast_sip_push_task. You can find this being done in the chan_pjsip_transfer function. This will give you a guarantee that session won't go away, the channel pointer won't go away, and that other threads aren't doing things at the same time. -- Joshua C. Colp Asterisk Technical Lead Sangoma Technologies Check us out at www.sangoma.com<http://www.sangoma.com> and www.asterisk.org<http://www.asterisk.org>
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev