diff options
author | Travis Howse <tjhowse@gmail.com> | 2024-02-03 17:14:02 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-03 17:14:02 (GMT) |
commit | 94ec2b9c9ce898723c3fe61fbc64d6c8f4f68700 (patch) | |
tree | ab379dde3a2f67767902ba4d4836cbde3b1c5312 | |
parent | 6b53d5fe04eadad76fb3706f0a4cc42d8f19f948 (diff) | |
download | cpython-94ec2b9c9ce898723c3fe61fbc64d6c8f4f68700.zip cpython-94ec2b9c9ce898723c3fe61fbc64d6c8f4f68700.tar.gz cpython-94ec2b9c9ce898723c3fe61fbc64d6c8f4f68700.tar.bz2 |
gh-114887 Reject only sockets of type SOCK_STREAM in create_datagram_endpoint() (#114893)
Also improve exception message.
Co-authored-by: Donghee Na <donghee.na92@gmail.com>
-rw-r--r-- | Lib/asyncio/base_events.py | 4 | ||||
-rw-r--r-- | Lib/test/test_asyncio/test_base_events.py | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2024-02-03-04-07-18.gh-issue-114887.uLSFmN.rst | 2 |
3 files changed, 5 insertions, 3 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index c60d768..aadc4f4 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -1340,9 +1340,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 c208097..82071ed 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -1232,7 +1232,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. |