Skip to content

gh-156365: Fix socket leak and stalled accept in the asyncio proactor server - #156366

Open
tonghuaroot wants to merge 1 commit into
python:mainfrom
tonghuaroot:gh-156365-proactor-accept-transport-error
Open

gh-156365: Fix socket leak and stalled accept in the asyncio proactor server#156366
tonghuaroot wants to merge 1 commit into
python:mainfrom
tonghuaroot:gh-156365-proactor-accept-transport-error

Conversation

@tonghuaroot

@tonghuaroot tonghuaroot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

BaseProactorEventLoop._start_serving() ran protocol_factory() and transport creation in the accept callback guarded only by except OSError / except CancelledError. A per-connection failure therefore leaked the accepted socket and either stopped the accept loop (non-OSError) or closed the listening socket (OSError).

Wrap the per-connection setup so the accepted socket is closed and the error is reported to the loop exception handler, while accept-stage errors keep their existing handling. This is the proactor counterpart of gh-155934 (selector) and gh-153133 (create_connection).

The added regression tests fail without the fix and pass with it; the full test_asyncio suite passes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant