mirror of
https://github.com/asterisk/asterisk.git
synced 2026-07-22 03:47:12 -07:00
209f8f012e
Under high concurrency, update_queue() may be invoked multiple times for the same call, causing member->calls and queue-level counters to be incremented more than once. The existing starttime check is not atomic and allows concurrent execution paths to pass. Treat member->starttime as a single-use token and consume it via CAS to ensure the call is counted exactly once. This also prevents incorrect call distribution when using strategies such as fewestcalls. Observed as a regression after upgrading to 20.17. Resolves: #1736
398 KiB
398 KiB