diff options
-rw-r--r-- | Lib/asyncio/base_events.py | 32 | ||||
-rw-r--r-- | Lib/asyncio/selector_events.py | 2 | ||||
-rw-r--r-- | Lib/asyncio/unix_events.py | 4 |
3 files changed, 9 insertions, 29 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 398497d..bd5bb32 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -82,26 +82,6 @@ def _set_reuseport(sock): 'SO_REUSEPORT defined but not implemented.') -def _is_stream_socket(sock_type): - if hasattr(socket, 'SOCK_NONBLOCK'): - # Linux's socket.type is a bitmask that can include extra info - # about socket (like SOCK_NONBLOCK bit), therefore we can't do simple - # `sock_type == socket.SOCK_STREAM`, see - # https://github.com/torvalds/linux/blob/v4.13/include/linux/net.h#L77 - # for more details. - return (sock_type & 0xF) == socket.SOCK_STREAM - else: - return sock_type == socket.SOCK_STREAM - - -def _is_dgram_socket(sock_type): - if hasattr(socket, 'SOCK_NONBLOCK'): - # See the comment in `_is_stream_socket`. - return (sock_type & 0xF) == socket.SOCK_DGRAM - else: - return sock_type == socket.SOCK_DGRAM - - def _ipaddr_info(host, port, family, type, proto): # Try to skip getaddrinfo if "host" is already an IP. Users might have # handled name resolution in their own code and pass in resolved IPs. @@ -112,9 +92,9 @@ def _ipaddr_info(host, port, family, type, proto): host is None: return None - if _is_stream_socket(type): + if type == socket.SOCK_STREAM: proto = socket.IPPROTO_TCP - elif _is_dgram_socket(type): + elif type == socket.SOCK_DGRAM: proto = socket.IPPROTO_UDP else: return None @@ -759,7 +739,7 @@ class BaseEventLoop(events.AbstractEventLoop): if sock is None: raise ValueError( 'host and port was not specified and no sock specified') - if not _is_stream_socket(sock.type): + if sock.type != socket.SOCK_STREAM: # We allow AF_INET, AF_INET6, AF_UNIX as long as they # are SOCK_STREAM. # We support passing AF_UNIX sockets even though we have @@ -809,7 +789,7 @@ class BaseEventLoop(events.AbstractEventLoop): allow_broadcast=None, sock=None): """Create datagram connection.""" if sock is not None: - if not _is_dgram_socket(sock.type): + if sock.type != socket.SOCK_DGRAM: raise ValueError( f'A UDP Socket was expected, got {sock!r}') if (local_addr or remote_addr or @@ -1037,7 +1017,7 @@ class BaseEventLoop(events.AbstractEventLoop): else: if sock is None: raise ValueError('Neither host/port nor sock were specified') - if not _is_stream_socket(sock.type): + if sock.type != socket.SOCK_STREAM: raise ValueError(f'A Stream Socket was expected, got {sock!r}') sockets = [sock] @@ -1060,7 +1040,7 @@ class BaseEventLoop(events.AbstractEventLoop): This method is a coroutine. When completed, the coroutine returns a (transport, protocol) pair. """ - if not _is_stream_socket(sock.type): + if sock.type != socket.SOCK_STREAM: raise ValueError(f'A Stream Socket was expected, got {sock!r}') transport, protocol = await self._create_connection_transport( diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py index 3f44a99..3b49b0c 100644 --- a/Lib/asyncio/selector_events.py +++ b/Lib/asyncio/selector_events.py @@ -41,7 +41,7 @@ def _test_selector_event(selector, fd, event): if hasattr(socket, 'TCP_NODELAY'): def _set_nodelay(sock): if (sock.family in {socket.AF_INET, socket.AF_INET6} and - base_events._is_stream_socket(sock.type) and + sock.type == socket.SOCK_STREAM and sock.proto == socket.IPPROTO_TCP): sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) else: diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index 50d78c8..2ab6b15 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -222,7 +222,7 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop): if sock is None: raise ValueError('no path and sock were specified') if (sock.family != socket.AF_UNIX or - not base_events._is_stream_socket(sock.type)): + sock.type != socket.SOCK_STREAM): raise ValueError( f'A UNIX Domain Stream Socket was expected, got {sock!r}') sock.setblocking(False) @@ -276,7 +276,7 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop): 'path was not specified, and no sock specified') if (sock.family != socket.AF_UNIX or - not base_events._is_stream_socket(sock.type)): + sock.type != socket.SOCK_STREAM): raise ValueError( f'A UNIX Domain Stream Socket was expected, got {sock!r}') |