aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-10-11 15:41:51 +0100
committerGravatar jesopo2019-10-11 15:41:51 +0100
commit0207e8e2b6831506c958d3377084b6a0910b7664 (patch)
treeb0674d9abc6a84a78f118781c3a8a46bcf5585df /modules
parentno longer treat ctrl+c as "shutdown" - bitbotctl will take this job (diff)
signature
Revert "no longer treat ctrl+c as "shutdown" - bitbotctl will take this job"
This reverts commit 73e6ede8cc1bd7c8a8946d3e77f5157a5177a775.
Diffstat (limited to 'modules')
-rw-r--r--modules/signals.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/modules/signals.py b/modules/signals.py
index eadf4d64..336a83d3 100644
--- a/modules/signals.py
+++ b/modules/signals.py
@@ -10,6 +10,29 @@ class Module(ModuleManager.BaseModule):
def SIGINT(self, signum, frame):
print()
+ self.bot.trigger(lambda: self._kill(signum))
+
+ def _kill(self, signum):
+ if self._exited:
+ return
+ self._exited = True
+
+ self.events.on("signal.interrupt").call(signum=signum)
+
+ written = False
+ for server in list(self.bot.servers.values()):
+ if server.connected:
+ server.socket.clear_send_buffer()
+
+ line = utils.irc.protocol.quit("Shutting down")
+ sent_line = server.send(line, immediate=True)
+ sent_line.events.on("send").hook(self._make_hook(server))
+
+ server.send_enabled = False
+ written = True
+
+ if not written:
+ sys.exit()
def _make_hook(self, server):
return lambda e: self.bot.disconnect(server)