aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jesopo2018-11-27 11:56:03 +0000
committerGravatar jesopo2018-11-27 11:56:03 +0000
commit72dca066264f547651908bbc16ab4e7d1020bd39 (patch)
tree33d7669436a479de3c2ed8e4b85c55b78221b776 /src
parentConvert BOOLEAN sqlite3 types to bool objects when retrieving them (diff)
signature
Add a way to catch when a writebuffer is emptied so we can e.g. assure a QUIT is
sent before shutting down the bot
Diffstat (limited to 'src')
-rw-r--r--src/IRCBot.py6
-rw-r--r--src/IRCServer.py3
2 files changed, 8 insertions, 1 deletions
diff --git a/src/IRCBot.py b/src/IRCBot.py
index 16ee3007..62594404 100644
--- a/src/IRCBot.py
+++ b/src/IRCBot.py
@@ -157,6 +157,9 @@ class Bot(object):
def run(self):
while self.running:
+ if not self.servers:
+ break
+
events = self.poll.poll(self.get_poll_timeout())
self.lock.acquire()
self._timers.call()
@@ -189,7 +192,8 @@ class Bot(object):
sock.parse_data(piece)
elif event & select.EPOLLOUT:
sock._send()
- self.register_read(sock)
+ if sock.fileno() in self.servers:
+ self.register_read(sock)
elif event & select.EPULLHUP:
print("hangup")
sock.disconnect()
diff --git a/src/IRCServer.py b/src/IRCServer.py
index c52c32d6..2379ecc2 100644
--- a/src/IRCServer.py
+++ b/src/IRCServer.py
@@ -299,6 +299,9 @@ class Server(IRCObject.Object):
self.bytes_written += bytes_written
self.write_buffer = self.write_buffer[bytes_written:]
+ if not self.waiting_send():
+ self.events.on("writebuffer.empty").call(server=self)
+
now = time.monotonic()
self.recent_sends.append(now)
self.last_send = now