Skip to content

net: add synchronous, role-neutral net.BoundSocket - #63951

Closed
guybedford wants to merge 1 commit into
nodejs:mainfrom
guybedford:tcp-bound-handle
Closed

guybedford wants to merge 1 commit into
nodejs:mainfrom
guybedford:tcp-bound-handle

Conversation

@guybedford

@guybedford guybedford commented Jun 16, 2026 •

Copy link
Copy Markdown
Contributor

Add net.BoundSocket, a synchronous TCP bind primitive that mirrors POSIX bind(2): the socket is bound to a local address but stays role-agnostic until it is adopted as a server (server.listen()) or a client (new net.Socket({ handle }) followed by connect()).

Constructing a net.BoundSocket binds inline via the existing uv_tcp_bind() path, so the kernel-assigned address (including the ephemeral port when port is 0) is available immediately via boundSocket.address(), and bind errors throw synchronously.

Adoption transfers ownership of the underlying handle; afterwards address() and close() throw ERR_SOCKET_HANDLE_ADOPTED. An un-adopted handle is released with close() or via Symbol.dispose (using).

The handle is passed in-process rather than as a file descriptor, so it also works on Windows.

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

Labels

errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. net Issues and PRs related to the net subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants