Issue #16955: Fix the poll() method for multiprocessing's socket
connections on Windows.
diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py
index 2ae8a81..25b0326 100644
--- a/Lib/multiprocessing/connection.py
+++ b/Lib/multiprocessing/connection.py
@@ -405,7 +405,7 @@
         return self._recv(size)
 
     def _poll(self, timeout):
-        r = wait([self._handle], timeout)
+        r = wait([self], timeout)
         return bool(r)
 
 
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index 533dbac..bb09638 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -2383,6 +2383,17 @@
         p.join()
         l.close()
 
+    def test_issue16955(self):
+        for fam in self.connection.families:
+            l = self.connection.Listener(family=fam)
+            c = self.connection.Client(l.address)
+            a = l.accept()
+            a.send_bytes(b"hello")
+            self.assertTrue(c.poll(1))
+            a.close()
+            c.close()
+            l.close()
+
 class _TestPoll(unittest.TestCase):
 
     ALLOWED_TYPES = ('processes', 'threads')
diff --git a/Misc/NEWS b/Misc/NEWS
index d09406b..c444ed6 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -147,6 +147,9 @@
 Library
 -------
 
+- Issue #16955: Fix the poll() method for multiprocessing's socket
+  connections on Windows.
+
 - SSLContext.load_dh_params() now properly closes the input file.
 
 - Issue #16829: IDLE printing no longer fails if there are spaces or other