summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTravis Howse <tjhowse@gmail.com>2024-02-05 04:01:37 (GMT)
committerGitHub <noreply@github.com>2024-02-05 04:01:37 (GMT)
commit5ce076fd92306a0c41cf574221b930d54374bb47 (patch)
treeda54b4b0357f7e5b7353d3c17d09ecdba7973b82
parent510eb4e6a8f1153119ac51031913676abdc44bb7 (diff)
downloadcpython-5ce076fd92306a0c41cf574221b930d54374bb47.zip
cpython-5ce076fd92306a0c41cf574221b930d54374bb47.tar.gz
cpython-5ce076fd92306a0c41cf574221b930d54374bb47.tar.bz2
[3.11] gh-114887 Reject only sockets of type SOCK_STREAM in create_da… (#114979)
Also improve exception message. (cherry picked from commit 94ec2b9c9ce898723c3fe61fbc64d6c8f4f68700) Co-authored-by: Donghee Na <donghee.na92@gmail.com>
-rw-r--r--Lib/asyncio/base_events.py4
-rw-r--r--Lib/test/test_asyncio/test_base_events.py2
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2024-02-03-04-07-18.gh-issue-114887.uLSFmN.rst2
3 files changed, 5 insertions, 3 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index c5dfc15..5fa28ca 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -1281,9 +1281,9 @@ class BaseEventLoop(events.AbstractEventLoop):
allow_broadcast=None, sock=None):
"""Create datagram connection."""
if sock is not None:
- if sock.type != socket.SOCK_DGRAM:
+ if sock.type == socket.SOCK_STREAM:
raise ValueError(
- f'A UDP Socket was expected, got {sock!r}')
+ f'A datagram socket was expected, got {sock!r}')
if (local_addr or remote_addr or
family or proto or flags or
reuse_port or allow_broadcast):
diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
index f3f83ad..e1fc7e6 100644
--- a/Lib/test/test_asyncio/test_base_events.py
+++ b/Lib/test/test_asyncio/test_base_events.py
@@ -1191,7 +1191,7 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
with sock:
coro = self.loop.create_datagram_endpoint(MyProto, sock=sock)
with self.assertRaisesRegex(ValueError,
- 'A UDP Socket was expected'):
+ 'A datagram socket was expected'):
self.loop.run_until_complete(coro)
def test_create_connection_no_host_port_sock(self):
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-02-03-04-07-18.gh-issue-114887.uLSFmN.rst b/Misc/NEWS.d/next/Core and Builtins/2024-02-03-04-07-18.gh-issue-114887.uLSFmN.rst
new file mode 100644
index 0000000..b4d8cf4
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2024-02-03-04-07-18.gh-issue-114887.uLSFmN.rst
@@ -0,0 +1,2 @@
+Changed socket type validation in :meth:`~asyncio.loop.create_datagram_endpoint` to accept all non-stream sockets.
+This fixes a regression in compatibility with raw sockets.