Check if channel is closed first when error occurs on reading or writing

pull/209/head
Sheng 2020-09-16 21:01:53 +08:00
parent 596e12d864
commit 19d816f991
1 changed files with 2 additions and 2 deletions

View File

@ -67,7 +67,7 @@ class Worker(object):
data = self.chan.recv(BUF_SIZE)
except (OSError, IOError) as e:
logging.error(e)
if errno_from_exception(e) in _ERRNO_CONNRESET:
if self.chan.closed or errno_from_exception(e) in _ERRNO_CONNRESET:
self.close(reason='chan error on reading')
else:
logging.debug('{!r} from {}:{}'.format(data, *self.dst_addr))
@ -93,7 +93,7 @@ class Worker(object):
sent = self.chan.send(data)
except (OSError, IOError) as e:
logging.error(e)
if errno_from_exception(e) in _ERRNO_CONNRESET:
if self.chan.closed or errno_from_exception(e) in _ERRNO_CONNRESET:
self.close(reason='chan error on writing')
else:
self.update_handler(IOLoop.WRITE)