diff options
Diffstat (limited to 'Lib/socket.py')
| -rw-r--r-- | Lib/socket.py | 21 | 
1 files changed, 15 insertions, 6 deletions
| diff --git a/Lib/socket.py b/Lib/socket.py index ea56a67..d4f1b65 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -12,6 +12,7 @@ Functions:  socket() -- create a new socket object  socketpair() -- create a pair of new socket objects [*]  fromfd() -- create a socket object from an open file descriptor [*] +fromshare() -- create a socket object from data received from socket.share() [*]  gethostname() -- return the current hostname  gethostbyname() -- map a hostname to its IP number  gethostbyaddr() -- map an IP number or hostname to DNS info @@ -53,7 +54,6 @@ try:  except ImportError:      errno = None  EBADF = getattr(errno, 'EBADF', 9) -EINTR = getattr(errno, 'EINTR', 4)  EAGAIN = getattr(errno, 'EAGAIN', 11)  EWOULDBLOCK = getattr(errno, 'EWOULDBLOCK', 11) @@ -112,6 +112,9 @@ class socket(_socket.socket):                                  s[7:])          return s +    def __getstate__(self): +        raise TypeError("Cannot serialize socket object") +      def dup(self):          """dup() -> socket object @@ -207,7 +210,6 @@ class socket(_socket.socket):          self._closed = True          return super().detach() -  def fromfd(fd, family, type, proto=0):      """ fromfd(fd, family, type[, proto]) -> socket object @@ -217,6 +219,14 @@ def fromfd(fd, family, type, proto=0):      nfd = dup(fd)      return socket(family, type, proto, nfd) +if hasattr(_socket.socket, "share"): +    def fromshare(info): +        """ fromshare(info) -> socket object + +        Create a socket object from a the bytes object returned by +        socket.share(pid). +        """ +        return socket(0, 0, 0, info)  if hasattr(_socket, "socketpair"): @@ -288,11 +298,10 @@ class SocketIO(io.RawIOBase):              except timeout:                  self._timeout_occurred = True                  raise +            except InterruptedError: +                continue              except error as e: -                n = e.args[0] -                if n == EINTR: -                    continue -                if n in _blocking_errnos: +                if e.args[0] in _blocking_errnos:                      return None                  raise | 
