From 9385487f54ea452a7e17fb4bd3e828cd55187e46 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Mon, 4 Aug 2014 16:26:08 +0200 Subject: [PATCH] Simplify and fix logic of umodes filtering. Closes GH-719. --- src/irclib.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/irclib.py b/src/irclib.py index b2c5378f6..91e5b0b1b 100644 --- a/src/irclib.py +++ b/src/irclib.py @@ -410,8 +410,8 @@ class IrcState(IrcCommandDispatcher): # msg.args = [nick, server, ircd-version, umodes, modes, # modes that require arguments? (non-standard)] self.ircd = msg.args[2] - self.supported['umodes'] = msg.args[3] - self.supported['chanmodes'] = msg.args[4] + self.supported['umodes'] = frozenset(msg.args[3]) + self.supported['chanmodes'] = frozenset(msg.args[4]) _005converters = utils.InsensitivePreservingDict({ 'modes': int, @@ -1068,13 +1068,10 @@ class Irc(IrcCommandDispatcher): if umodes == '': umodes = conf.supybot.protocols.irc.umodes() supported = self.state.supported.get('umodes') + if supported: + acceptedchars = supported.union('+-') + umodes = ''.join([m for m in umodes if m in acceptedchars]) if umodes: - addSub = '+' - if umodes[0] in '+-': - (addSub, umodes) = (umodes[0], umodes[1:]) - if supported: - umodes = ''.join([m for m in umodes if m in supported]) - umodes = ''.join([addSub, umodes]) log.info('Sending user modes to %s: %s', self.network, umodes) self.sendMsg(ircmsgs.mode(self.nick, umodes)) do377 = do422 = do376