From 48ae49ac03a51dd573da9b4bb7140c7ec6cfdb6a Mon Sep 17 00:00:00 2001 From: Michael Bailey Date: Tue, 15 Nov 2016 07:09:29 -0800 Subject: [PATCH 1/3] Fixes #119 per comments --- irc/server.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/irc/server.py b/irc/server.py index 4ed4482..f3b6d60 100755 --- a/irc/server.py +++ b/irc/server.py @@ -184,7 +184,10 @@ def _handle_line(self, line): def _send(self, msg): log.debug('to %s: %s', self.client_ident(), msg) - self.request.send(msg.encode('utf-8') + b'\r\n') + try: + self.request.send(msg.encode('utf-8') + b'\r\n') + except socket.error: + raise self.Disconnect() def handle_nick(self, params): """ From 7e8c8d52b30aa5352790d62b521e32de25786b97 Mon Sep 17 00:00:00 2001 From: Michael Bailey Date: Tue, 15 Nov 2016 08:56:21 -0800 Subject: [PATCH 2/3] EPIPE-specific socket.error handling + changelog --- CHANGES.rst | 4 ++++ irc/server.py | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 259fc8c..0d69251 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,7 @@ +15.0.5 +====== +* #119: Handle broken pipe exception in IRCClient _send() (server.py). + 15.0.4 ====== diff --git a/irc/server.py b/irc/server.py index f3b6d60..5f60527 100755 --- a/irc/server.py +++ b/irc/server.py @@ -43,6 +43,7 @@ from __future__ import print_function, absolute_import import argparse +import errno import logging import socket import select @@ -186,8 +187,11 @@ def _send(self, msg): log.debug('to %s: %s', self.client_ident(), msg) try: self.request.send(msg.encode('utf-8') + b'\r\n') - except socket.error: - raise self.Disconnect() + except socket.error, e: + if e.errno == errno.EPIPE: + raise self.Disconnect() + else: + raise def handle_nick(self, params): """ From c0a56993ab976913825a2b5a7509ab11138944c6 Mon Sep 17 00:00:00 2001 From: Michael Bailey Date: Tue, 15 Nov 2016 09:12:25 -0800 Subject: [PATCH 3/3] Python3-compatible syntax --- irc/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/irc/server.py b/irc/server.py index 5f60527..5c95b5c 100755 --- a/irc/server.py +++ b/irc/server.py @@ -187,7 +187,7 @@ def _send(self, msg): log.debug('to %s: %s', self.client_ident(), msg) try: self.request.send(msg.encode('utf-8') + b'\r\n') - except socket.error, e: + except socket.error as e: if e.errno == errno.EPIPE: raise self.Disconnect() else: