aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2019-05-29 16:11:47 +0100
committerGravatar jesopo2019-05-29 16:11:47 +0100
commitb8f778d7bd3072dc5f794d99c40c7e010f1fb915 (patch)
tree6c1ec578e5f6d8358c39e3d081841626fd3aeb25
parentSwitch resume.py to use the last `server-time` it saw, not last .recv() (diff)
signature
Only try to send QUITs on ctrl+c when we're connected - sys.exit otherwise
-rw-r--r--modules/line_handler/core.py1
-rw-r--r--modules/signals.py16
-rw-r--r--src/IRCServer.py1
3 files changed, 13 insertions, 5 deletions
diff --git a/modules/line_handler/core.py b/modules/line_handler/core.py
index 88544a08..c7212ccf 100644
--- a/modules/line_handler/core.py
+++ b/modules/line_handler/core.py
@@ -11,6 +11,7 @@ def handle_001(event):
event["server"].name = event["prefix"].hostmask
event["server"].set_own_nickname(event["args"][0])
event["server"].send_whois(event["server"].nickname)
+ event["server"].connected = True
def handle_005(events, event):
isupport_list = event["args"][1:-1]
diff --git a/modules/signals.py b/modules/signals.py
index 580be9ff..522179c5 100644
--- a/modules/signals.py
+++ b/modules/signals.py
@@ -1,4 +1,4 @@
-import signal
+import signal, sys
from src import Config, ModuleManager, utils
class Module(ModuleManager.BaseModule):
@@ -19,11 +19,17 @@ class Module(ModuleManager.BaseModule):
self.events.on("signal.interrupt").call(signum=signum)
+ written = False
for server in self.bot.servers.values():
- server.socket.clear_send_buffer()
- line = server.send_quit("Shutting down")
- server.send_enabled = False
- line.on_send(self._make_hook(server))
+ if server.connected:
+ server.socket.clear_send_buffer()
+ line = server.send_quit("Shutting down")
+ server.send_enabled = False
+ line.on_send(self._make_hook(server))
+ written = True
+
+ if not written:
+ sys.exit()
def _make_hook(self, server):
return lambda: self.bot.disconnect(server)
diff --git a/src/IRCServer.py b/src/IRCServer.py
index 041dc0d8..c970f5de 100644
--- a/src/IRCServer.py
+++ b/src/IRCServer.py
@@ -17,6 +17,7 @@ class Server(IRCObject.Object):
self.id = id
self.alias = alias
self.connection_params = connection_params
+ self.connected = False
self.name = None # type: typing.Optional[str]
self.version = None # type: typing.Optional[str]