GH-88968: Reject socket that is already used as a transport (#98010)

This commit is contained in:
Guido van Rossum 2022-10-07 12:56:50 -07:00 committed by GitHub
parent c11b667a1d
commit c06276402b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 0 deletions

View file

@ -58,6 +58,7 @@ def __init__(self, selector=None):
def _make_socket_transport(self, sock, protocol, waiter=None, *,
extra=None, server=None):
self._ensure_fd_no_transport(sock)
return _SelectorSocketTransport(self, sock, protocol, waiter,
extra, server)
@ -68,6 +69,7 @@ def _make_ssl_transport(
ssl_handshake_timeout=constants.SSL_HANDSHAKE_TIMEOUT,
ssl_shutdown_timeout=constants.SSL_SHUTDOWN_TIMEOUT,
):
self._ensure_fd_no_transport(rawsock)
ssl_protocol = sslproto.SSLProtocol(
self, protocol, sslcontext, waiter,
server_side, server_hostname,
@ -80,6 +82,7 @@ def _make_ssl_transport(
def _make_datagram_transport(self, sock, protocol,
address=None, waiter=None, extra=None):
self._ensure_fd_no_transport(sock)
return _SelectorDatagramTransport(self, sock, protocol,
address, waiter, extra)