From 34f7a765cb42a256ea683147d9172953c62cb2f0 Mon Sep 17 00:00:00 2001 From: James Lu Date: Wed, 22 Nov 2017 09:26:05 -0800 Subject: [PATCH] OperUp: don't try to autooper multiple times This fixes an infinite loop when receiving OPERMOTDs that use the regular MOTD numerics (e.g. on InspIRCd). (cherry picked from commit 8c0b8d91a17a62cead22553c80b84b6d190df8df) --- OperUp/plugin.py | 7 +++++++ 1 file changed, 7 insertions(+) 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 "