From f1ef6f9e1562370b1fac578f347b412deda0a54d Mon Sep 17 00:00:00 2001 From: James Lu Date: Thu, 16 Jul 2015 16:49:16 -0700 Subject: [PATCH] Irc: catch ConnectionError in both run() and send() Part of #42. --- main.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index 6a23f67..f758c48 100755 --- a/main.py +++ b/main.py @@ -75,7 +75,7 @@ class Irc(): self.socket.close() autoconnect = self.serverdata.get('autoconnect') if autoconnect is not None and autoconnect >= 0: - log.warning('(%s) Going to auto-reconnect in %s seconds.', self.name, autoconnect) + log.info('(%s) Going to auto-reconnect in %s seconds.', self.name, autoconnect) time.sleep(autoconnect) self.connect() @@ -92,11 +92,11 @@ class Irc(): line, buf = buf.split('\n', 1) log.debug("(%s) <- %s", self.name, line) proto.handle_events(self, line) - except (socket.error, classes.ProtocolError) as e: - log.error('(%s) Disconnected from IRC: %s: %s', - self.name, type(e).__name__, str(e)) - self.disconnect() + except (socket.error, classes.ProtocolError, ConnectionError) as e: + log.warning('(%s) Disconnected from IRC: %s: %s', + self.name, type(e).__name__, str(e)) break + self.disconnect() def send(self, data): # Safeguard against newlines in input!! Otherwise, each line gets @@ -104,7 +104,12 @@ class Irc(): data = data.replace('\n', ' ') data = data.encode("utf-8") + b"\n" log.debug("(%s) -> %s", self.name, data.decode("utf-8").strip("\n")) - self.socket.send(data) + try: + self.socket.send(data) + except (socket.error, classes.ProtocolError, ConnectionError) as e: + log.warning('(%s) Disconnected from IRC: %s: %s', + self.name, type(e).__name__, str(e)) + self.disconnect() if __name__ == '__main__': log.info('PyLink starting...')