]> git.ipfire.org Git - thirdparty/asterisk.git/commit
bridge_basic.c: Make sure that ast_bridge_channel is not destroyed while iterating...
authorTinet-mucw <mucw@ti-net.com.cn>
Fri, 14 Jun 2024 02:16:36 +0000 (19:16 -0700)
committerAsterisk Development Team <asteriskteam@digium.com>
Thu, 11 Jul 2024 13:22:18 +0000 (13:22 +0000)
commitc759489d3e14dc3821079e1cd2818b314b8fa88a
treebea20331b6537a9a7a5a00182d1762a6a814d4b5
parent1108f61bfbba1291a1b95b3cca00ffea19ccd2f2
bridge_basic.c: Make sure that ast_bridge_channel is not destroyed while iterating over bridge->channels.
From the gdb information, we can see that while iterating over bridge->channels, the ast_bridge_channel reference count is 0, indicating it has already been destroyed.Additionally, when ast_bridge_channel is removed from bridge->channels, the bridge is first locked. Therefore, locking the bridge before iterating over bridge->channels can resolve the race condition.

Resolves: https://github.com/asterisk/asterisk/issues/768
(cherry picked from commit a1d0dac6c681e7cd2a15634907f729a9fd76259c)
main/bridge_basic.c