8000 Fix offset with connection backlog - adapted the tests - created new … · ChristianHrs/cpython@17d39e9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 17d39e9

Browse files
committed
Fix offset with connection backlog - adapted the tests - created new tests for 0 and 1 connections
1 parent f695eca commit 17d39e9

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

Lib/asyncio/selector_events.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ def _accept_connection(
173173
# listening socket has triggered an EVENT_READ. There may be multiple
174174
# connections waiting for an .accept() so it is called in a loop.
175175
# See https://bugs.python.org/issue27906 for more details.
176-
for _ in range(backlog):
176+
for _ in range(backlog + 1):
177177
try:
178178
conn, addr = sock.accept()
179179
if self._debug:

Lib/test/test_asyncio/test_selector_events.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,19 @@ def test_process_events_write_cancelled(self):
347347
selectors.EVENT_WRITE)])
348348
self.loop._remove_writer.assert_called_with(1)
349349

350+
def test_accept_connection_zero_one(self):
351+
for backlog in [0, 1]:
352+
sock = mock.Mock()
353+
sock.accept.return_value = (mock.Mock(), mock.Mock())
354+
with self.subTest(backlog):
355+
mock_obj = mock.patch.object
356+
with mock_obj(self.loop, '_accept_connection2') as accept2_mock:
357+
self.loop._accept_connection(
358+
mock.Mock(), sock, backlog=backlog)
359+
self.loop.run_until_complete(asyncio.sleep(0))
360+
print("Accepted vs Backlog:", sock.accept.call_count, backlog)
361+
self.assertEqual(sock.accept.call_count, backlog + 1)
362+
350363
def test_accept_connection_multiple(self):
351364
sock = mock.Mock()
352365
sock.accept.return_value = (mock.Mock(), mock.Mock())
@@ -362,7 +375,7 @@ def test_accept_connection_multiple(self):
362375
self.loop._accept_connection(
363376
mock.Mock(), sock, backlog=backlog)
364377
self.loop.run_until_complete(asyncio.sleep(0))
365-
self.assertEqual(sock.accept.call_count, backlog)
378+
self.assertEqual(sock.accept.call_count, backlog + 1)
366379

367380
def test_accept_connection_skip_connectionabortederror(self):
368381
sock = mock.Mock()
@@ -388,7 +401,7 @@ def mock_sock_accept():
388401
# as in test_accept_connection_multiple avoid task pending
389402
# warnings by using asyncio.sleep(0)
390403
self.loop.run_until_complete(asyncio.sleep(0))
391-
self.assertEqual(sock.accept.call_count, backlog)
404+
self.assertEqual(sock.accept.call_count, backlog + 1)
392405

393406
class SelectorTransportTests(test_utils.TestCase):
394407

0 commit comments

Comments
 (0)
0