From: John Runyon Date: Sat, 12 Aug 2023 02:59:50 +0000 (-0600) Subject: update error handling a bit X-Git-Url: https://jfr.im/git/erebus.git/commitdiff_plain/b736b336bbec2f05e576e13d06619dc9552a7c91 update error handling a bit --- diff --git a/bot.py b/bot.py index b0aec1b..c727d72 100644 --- a/bot.py +++ b/bot.py @@ -81,6 +81,7 @@ class Bot(object): def connect(self): self.log('!', "Connecting") if self.conn.connect(): + self.log('!', "Connected") self.parent.newfd(self, self.conn.socket.fileno()) def getdata(self): @@ -89,7 +90,7 @@ class Bot(object): self.lastreceived = time.time() return recvd except EOFError as e: - return ":%s ERROR :%s%r" % (self.nick, e.__class__.__name__, e.args) + return [":%s ERROR :%s%r" % (self.nick, e.__class__.__name__, e.args)] def _checknick(self): # check if we're using the right nick, try changing if self.nick != self.permnick and self.conn.registered(): @@ -558,10 +559,16 @@ class BotConnection(object): def _write(self, line): self.socket.sendall(line.encode('utf-8', 'backslashreplace')+b"\r\n") + def _getsockerr(self): + try: # SO_ERROR might not exist on all platforms + return self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR) + except: + return None + def read(self): recvd = self.socket.recv(8192) - if recvd == "": - raise EOFError("socket.recv in %s returned empty" % (self.parent.nick)) + if recvd == b"": + raise EOFError("socket.recv returned empty", self.parent.nick, self._getsockerr()) self.buffer += recvd lines = []