diff --git a/OperUp/plugin.py b/OperUp/plugin.py index be8e30a..41b1283 100644 --- a/OperUp/plugin.py +++ b/OperUp/plugin.py @@ -52,12 +52,18 @@ class OperUp(callbacks.Plugin): 422 (MOTD not found).""" if not self.registryValue('autoOper'): return + # Don't try to oper more than once per network: otherwise we can hit + # infinite loops if OPERMOTDs also use the regular MOTD numerics + # (e.g. InspIRCd) + if hasattr(irc, '_operup_tried_oper'): + return if irc.network in self.registryValue('operNets'): if self.registryValue("operName") and \ self.registryValue("operPass"): irc.sendMsg(ircmsgs.IrcMsg(command="OPER", args=[self.registryValue("operName"), self.registryValue("operPass")])) + irc._operup_tried_oper = True else: self.log.warning("OperUp: Bot is set to oper on network %s, but" " operName and/or operPass are not defined!", irc.network) @@ -103,6 +109,7 @@ class OperUp(callbacks.Plugin): irc.sendMsg(ircmsgs.IrcMsg(command="OPER", args=[self.registryValue("operName"), self.registryValue("operPass")])) + irc._operup_tried_oper = True irc.replySuccess() else: irc.error(_("Either the operName or the operPass "