diff options
Diffstat (limited to 'Lib/socket.py')
-rw-r--r-- | Lib/socket.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Lib/socket.py b/Lib/socket.py index 9133411..a82e48d 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -49,9 +49,11 @@ from _socket import * import os, sys, io try: - from errno import EBADF + import errno except ImportError: - EBADF = 9 + errno = None +EBADF = getattr(errno, 'EBADF', 9) +EINTR = getattr(errno, 'EINTR', 4) __all__ = ["getfqdn", "create_connection"] __all__.extend(os._get_exports_list(_socket)) @@ -212,7 +214,13 @@ class SocketIO(io.RawIOBase): def readinto(self, b): self._checkClosed() self._checkReadable() - return self._sock.recv_into(b) + while True: + try: + return self._sock.recv_into(b) + except error as e: + if e.args[0] == EINTR: + continue + raise def write(self, b): self._checkClosed() |