diff options
author | Vincent Michel <vxgmichel@gmail.com> | 2019-05-07 19:18:49 +0200 |
---|---|---|
committer | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-05-07 10:18:49 -0700 |
commit | 63deaa5b70108ef441c57728322da6b4321db4fc (patch) | |
tree | 79e5e4911d6a0d6460d36355d394c969b98f437b /Lib/test/test_asyncio/test_selector_events.py | |
parent | 91cc01f40eec03ece2d6b04ad9ea786e77707d8d (diff) | |
download | cpython-63deaa5b70108ef441c57728322da6b4321db4fc.tar.gz cpython-63deaa5b70108ef441c57728322da6b4321db4fc.zip |
bpo-31922: Do not connect UDP sockets when broadcast is allowed (GH-423)
*Moved from python/asyncio#493.*
This PR fixes issue python/asyncio#480, as explained in [this comment](https://github.com/python/asyncio/issues/480#issuecomment-278703828).
The `_SelectorDatagramTransport.sendto` method has to be modified ~~so `_sock.sendto` is used in all cases (because it is tricky to reliably tell if the socket is connected or not). Could that be an issue for connected sockets?~~ *EDIT* ... so `_sock.send` is used only if `_sock` is connected.
It also protects `socket.getsockname` against `OSError` in `_SelectorTransport`. This might happen on Windows if the socket is not connected (e.g. for UDP broadcasting).
https://bugs.python.org/issue31922
Diffstat (limited to 'Lib/test/test_asyncio/test_selector_events.py')
-rw-r--r-- | Lib/test/test_asyncio/test_selector_events.py | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Lib/test/test_asyncio/test_selector_events.py b/Lib/test/test_asyncio/test_selector_events.py index d0d171a9853..bf721b0005b 100644 --- a/Lib/test/test_asyncio/test_selector_events.py +++ b/Lib/test/test_asyncio/test_selector_events.py @@ -1065,6 +1065,7 @@ class SelectorDatagramTransportTests(test_utils.TestCase): self.sock.fileno.return_value = 7 def datagram_transport(self, address=None): + self.sock.getpeername.side_effect = None if address else OSError transport = _SelectorDatagramTransport(self.loop, self.sock, self.protocol, address=address) |