diff options
Diffstat (limited to 'netlib/tcp.py')
-rw-r--r-- | netlib/tcp.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/netlib/tcp.py b/netlib/tcp.py index ac4fab95..a68b608b 100644 --- a/netlib/tcp.py +++ b/netlib/tcp.py @@ -56,7 +56,7 @@ class FileLike: while length > 0: try: data = self.o.read(length) - except (SSL.ZeroReturnError, SSL.SysCallError): + except SSL.ZeroReturnError: break except SSL.WantReadError: if (time.time() - start) < self.o.gettimeout(): @@ -68,6 +68,8 @@ class FileLike: raise NetLibTimeout except socket.error: raise NetLibDisconnect + except SSL.SysCallError, v: + raise NetLibDisconnect if not data: break result += data @@ -82,7 +84,7 @@ class FileLike: else: r = self.o.write(v) return r - except SSL.Error: + except (SSL.Error, socket.error): raise NetLibDisconnect() def readline(self, size = None): @@ -91,7 +93,10 @@ class FileLike: while True: if size is not None and bytes_read >= size: break - ch = self.read(1) + try: + ch = self.read(1) + except NetLibDisconnect: + break bytes_read += 1 if not ch: break |