We used to perform unneeded lock/unlock dances to perform block, unblock and disconnect actions, and these were potentially unsafe because we might have looped in data that could be potentially be changed by other threads.
We could have also done the same by saving the handlers ids in a temporary array and eventually remove them, but I don't see a reason for that since we can just keep all locked without the risk of creating deadlocks.
Coverity CID: #1474757, #1474771, #1474429