Merge 3.5 (issue #28652)
This commit is contained in:
commit
5cb0c09fa6
|
@ -98,14 +98,6 @@ def _is_dgram_socket(sock):
|
||||||
return (sock.type & socket.SOCK_DGRAM) == socket.SOCK_DGRAM
|
return (sock.type & socket.SOCK_DGRAM) == socket.SOCK_DGRAM
|
||||||
|
|
||||||
|
|
||||||
def _is_ip_socket(sock):
|
|
||||||
if sock.family == socket.AF_INET:
|
|
||||||
return True
|
|
||||||
if hasattr(socket, 'AF_INET6') and sock.family == socket.AF_INET6:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def _ipaddr_info(host, port, family, type, proto):
|
def _ipaddr_info(host, port, family, type, proto):
|
||||||
# Try to skip getaddrinfo if "host" is already an IP. Users might have
|
# 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.
|
# handled name resolution in their own code and pass in resolved IPs.
|
||||||
|
@ -796,9 +788,15 @@ class BaseEventLoop(events.AbstractEventLoop):
|
||||||
if sock is None:
|
if sock is None:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'host and port was not specified and no sock specified')
|
'host and port was not specified and no sock specified')
|
||||||
if not _is_stream_socket(sock) or not _is_ip_socket(sock):
|
if not _is_stream_socket(sock):
|
||||||
|
# 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
|
||||||
|
# a dedicated API for that: create_unix_connection.
|
||||||
|
# Disallowing AF_UNIX in this method, breaks backwards
|
||||||
|
# compatibility.
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'A TCP Stream Socket was expected, got {!r}'.format(sock))
|
'A Stream Socket was expected, got {!r}'.format(sock))
|
||||||
|
|
||||||
transport, protocol = yield from self._create_connection_transport(
|
transport, protocol = yield from self._create_connection_transport(
|
||||||
sock, protocol_factory, ssl, server_hostname)
|
sock, protocol_factory, ssl, server_hostname)
|
||||||
|
@ -1055,9 +1053,9 @@ class BaseEventLoop(events.AbstractEventLoop):
|
||||||
else:
|
else:
|
||||||
if sock is None:
|
if sock is None:
|
||||||
raise ValueError('Neither host/port nor sock were specified')
|
raise ValueError('Neither host/port nor sock were specified')
|
||||||
if not _is_stream_socket(sock) or not _is_ip_socket(sock):
|
if not _is_stream_socket(sock):
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'A TCP Stream Socket was expected, got {!r}'.format(sock))
|
'A Stream Socket was expected, got {!r}'.format(sock))
|
||||||
sockets = [sock]
|
sockets = [sock]
|
||||||
|
|
||||||
server = Server(self, sockets)
|
server = Server(self, sockets)
|
||||||
|
|
|
@ -1047,22 +1047,20 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
|
||||||
MyProto, 'example.com', 80, sock=object())
|
MyProto, 'example.com', 80, sock=object())
|
||||||
self.assertRaises(ValueError, self.loop.run_until_complete, coro)
|
self.assertRaises(ValueError, self.loop.run_until_complete, coro)
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'no Unix sockets')
|
|
||||||
def test_create_connection_wrong_sock(self):
|
def test_create_connection_wrong_sock(self):
|
||||||
sock = socket.socket(socket.AF_UNIX)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
with sock:
|
with sock:
|
||||||
coro = self.loop.create_connection(MyProto, sock=sock)
|
coro = self.loop.create_connection(MyProto, sock=sock)
|
||||||
with self.assertRaisesRegex(ValueError,
|
with self.assertRaisesRegex(ValueError,
|
||||||
'A TCP Stream Socket was expected'):
|
'A Stream Socket was expected'):
|
||||||
self.loop.run_until_complete(coro)
|
self.loop.run_until_complete(coro)
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'no Unix sockets')
|
|
||||||
def test_create_server_wrong_sock(self):
|
def test_create_server_wrong_sock(self):
|
||||||
sock = socket.socket(socket.AF_UNIX)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
with sock:
|
with sock:
|
||||||
coro = self.loop.create_server(MyProto, sock=sock)
|
coro = self.loop.create_server(MyProto, sock=sock)
|
||||||
with self.assertRaisesRegex(ValueError,
|
with self.assertRaisesRegex(ValueError,
|
||||||
'A TCP Stream Socket was expected'):
|
'A Stream Socket was expected'):
|
||||||
self.loop.run_until_complete(coro)
|
self.loop.run_until_complete(coro)
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(socket, 'SOCK_NONBLOCK'),
|
@unittest.skipUnless(hasattr(socket, 'SOCK_NONBLOCK'),
|
||||||
|
|
Loading…
Reference in New Issue