aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-06-17 14:07:44 +0100
committerGravatar jesopo2019-06-17 14:07:44 +0100
commit0c023680232f0265b4aab5eb6c8b8352e131df16 (patch)
treef8d16341f2551f7fc7e95bfc7f7accc63dc59d7d /modules
parentMake sure we exit event loop when there's no servers left (diff)
signature
panic() if a sasl dance fails on first connection, disconnect on reconnect sasl
fail
Diffstat (limited to 'modules')
-rw-r--r--modules/ircv3_sasl/__init__.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/modules/ircv3_sasl/__init__.py b/modules/ircv3_sasl/__init__.py
index 2e8abb85..58442b87 100644
--- a/modules/ircv3_sasl/__init__.py
+++ b/modules/ircv3_sasl/__init__.py
@@ -111,8 +111,7 @@ class Module(ModuleManager.BaseModule):
else:
if current_scram.state == scram.SCRAMState.VerifyFailed:
# server gave a bad verification so we should panic
- event["server"].disconnect()
- raise ValueError("Server SCRAM verification failed")
+ self._panic(event["server"], "SCRAM VerifyFailed")
else:
raise ValueError("unknown sasl mechanism '%s'" % mechanism)
@@ -138,10 +137,16 @@ class Module(ModuleManager.BaseModule):
self._end_sasl(event["server"])
@utils.hook("received.904")
def sasl_failure(self, event):
- self.log.warn("SASL failure for %s: %s",
- [str(event["server"]), event["args"][1]])
- self._end_sasl(event["server"])
+ self._panic(event["server"], "ERR_SASLFAIL (%s)" % event["args"][1])
@utils.hook("received.907")
def sasl_already(self, event):
self._end_sasl(event["server"])
+
+ def _panic(self, server, message):
+ message = "SASL panic for %s: %s" % (str(server), message)
+ if server.reconnected:
+ self.log.error(message)
+ self.bot.disconnect(server)
+ else:
+ self.bot.panic(reason=message)