summaryrefslogtreecommitdiff
path: root/tests/extmod/uselect_poll_udp.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2020-03-16 16:42:28 +1100
committerDamien George <damien.p.george@gmail.com>2020-03-18 10:49:27 +1100
commit00267aae0b231cc4fec28ddaafd7f8917a75448f (patch)
tree6e3f129133f271a34c618f1178c72fe6c379884e /tests/extmod/uselect_poll_udp.py
parenteae495a7147983267371b09ea606977efa9111a5 (diff)
extmod/modlwip: Fix polling of UDP socket so it doesn't return HUP.
STATE_NEW will return HUP when polled so put active UDP sockets into a new state which is different to STATE_NEW. Fixes issue #5758.
Diffstat (limited to 'tests/extmod/uselect_poll_udp.py')
-rw-r--r--tests/extmod/uselect_poll_udp.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/extmod/uselect_poll_udp.py b/tests/extmod/uselect_poll_udp.py
new file mode 100644
index 000000000..e7d7dfe34
--- /dev/null
+++ b/tests/extmod/uselect_poll_udp.py
@@ -0,0 +1,28 @@
+# test select.poll on UDP sockets
+
+try:
+ import usocket as socket, uselect as select
+except ImportError:
+ try:
+ import socket, select
+ except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+
+s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+s.bind(socket.getaddrinfo('127.0.0.1', 8000)[0][-1])
+poll = select.poll()
+
+# UDP socket should not be readable
+poll.register(s, select.POLLIN)
+print(len(poll.poll(0)))
+
+# UDP socket should be writable
+poll.modify(s, select.POLLOUT)
+print(poll.poll(0)[0][1] == select.POLLOUT)
+
+# same test for select.select, but just skip it if the function isn't available
+if hasattr(select, "select"):
+ r, w, e = select.select([s], [], [], 0)
+ assert not r and not w and not e