
After services does a SVSNICK on a user, if the new nickname is banned in a channel, they are still allowed to talk and change their nick if they were not banned previously. For example: *** Mode change "+b testing!*@*" on #test by RuneB *** Mode change "-o RuneB" on #test by RuneB <RuneB> I can talk. Now I'll force a SVSNICK on me to testing. *** RuneB is now known as testing <testing> can I still talk? <testing> yep. This is because is_banned doesn't recheck the ban list if the banserial has not changed for the user (instead it returns immediately). SVSNICK forces a nick change, but doesn't change the banserial in any of the channels the user is in. This causes is_banned to think the ban status has not changed. I have written a patch to fix this. After SVSNICK is done, it now goes through the channels the user is in and changes their cached banserial. is_banned will then recheck the ban list the next time it is called. For example, with the patch: *** Mode change "+b testing!*@*" on #test by RuneB *** Mode change "-o RuneB" on #test by RuneB <RuneB> I can talk. Now I'll force a SVSNICK on me to testing. This time, with a patch to force my banserial to be changed. *** RuneB is now known as testing <testing> can I still talk? *** #test Cannot send to channel <testing> nope. *** #test Cannot send to channel -- Ned T. Crigler