SocketClosed exception

This commit is contained in:
Andrey Egorov 2017-11-19 13:04:40 +03:00
parent 32bca4f1b8
commit 004c92edbe

View File

@ -18,6 +18,9 @@ CONN_RESET_ERRNOS = {
class TcpClient: class TcpClient:
class SocketClosed(ConnectionError):
pass
def __init__(self, proxy=None, timeout=timedelta(seconds=5), loop=None): def __init__(self, proxy=None, timeout=timedelta(seconds=5), loop=None):
self.proxy = proxy self.proxy = proxy
self._socket = None self._socket = None
@ -100,7 +103,7 @@ class TcpClient:
loop=self._loop loop=self._loop
) )
if not self.connected: if not self.connected:
raise ConnectionResetError('Socket has closed') raise self.SocketClosed()
if not done: if not done:
raise TimeoutError() raise TimeoutError()
return await done.pop() return await done.pop()
@ -111,6 +114,8 @@ class TcpClient:
raise ConnectionResetError('No connection') raise ConnectionResetError('No connection')
try: try:
await self._wait_close(self.sock_sendall(data)) await self._wait_close(self.sock_sendall(data))
except self.SocketClosed:
raise ConnectionResetError('Socket has closed')
except OSError as e: except OSError as e:
if e.errno in CONN_RESET_ERRNOS: if e.errno in CONN_RESET_ERRNOS:
self._raise_connection_reset(e) self._raise_connection_reset(e)
@ -128,6 +133,8 @@ class TcpClient:
raise ConnectionResetError('No connection') raise ConnectionResetError('No connection')
try: try:
partial = await self._wait_close(self.sock_recv(bytes_left)) partial = await self._wait_close(self.sock_recv(bytes_left))
except self.SocketClosed:
raise ConnectionResetError('Socket has closed')
except OSError as e: except OSError as e:
if e.errno in CONN_RESET_ERRNOS: if e.errno in CONN_RESET_ERRNOS:
self._raise_connection_reset(e) self._raise_connection_reset(e)