[Python-checkins] cpython (3.5): Issue #28652: Partially rollback previous changes
yury.selivanov
python-checkins at python.org
Mon Nov 21 17:48:02 EST 2016
https://hg.python.org/cpython/rev/0ee76f3afd70
changeset: 105308:0ee76f3afd70
branch: 3.5
parent: 105283:75b1091594f8
user: Yury Selivanov <yury at magic.io>
date: Mon Nov 21 17:47:27 2016 -0500
summary:
Issue #28652: Partially rollback previous changes
Allow AF_UNIX in create_server & create_connection
files:
Lib/asyncio/base_events.py | 22 +++++------
Lib/test/test_asyncio/test_base_events.py | 10 ++---
2 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -98,14 +98,6 @@
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):
# 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.
@@ -795,9 +787,15 @@
if sock is None:
raise ValueError(
'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(
- '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(
sock, protocol_factory, ssl, server_hostname)
@@ -1054,9 +1052,9 @@
else:
if sock is None:
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(
- 'A TCP Stream Socket was expected, got {!r}'.format(sock))
+ 'A Stream Socket was expected, got {!r}'.format(sock))
sockets = [sock]
server = Server(self, sockets)
diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
--- a/Lib/test/test_asyncio/test_base_events.py
+++ b/Lib/test/test_asyncio/test_base_events.py
@@ -1047,22 +1047,20 @@
MyProto, 'example.com', 80, sock=object())
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):
- sock = socket.socket(socket.AF_UNIX)
+ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
with sock:
coro = self.loop.create_connection(MyProto, sock=sock)
with self.assertRaisesRegex(ValueError,
- 'A TCP Stream Socket was expected'):
+ 'A Stream Socket was expected'):
self.loop.run_until_complete(coro)
- @unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'no Unix sockets')
def test_create_server_wrong_sock(self):
- sock = socket.socket(socket.AF_UNIX)
+ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
with sock:
coro = self.loop.create_server(MyProto, sock=sock)
with self.assertRaisesRegex(ValueError,
- 'A TCP Stream Socket was expected'):
+ 'A Stream Socket was expected'):
self.loop.run_until_complete(coro)
@unittest.skipUnless(hasattr(socket, 'SOCK_NONBLOCK'),
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list