fix(daemon): Robust Windows daemon process management with dynamic ports #363
+60
−30
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR: Robust Windows Daemon Process Management
The Problem
On Windows,
agent-browseruses a TCP port derived from a hash of the session name (default:50838for "default"). This leads to several issues:The Solution
This PR implements a dynamic port allocation strategy for Windows, mirroring the flexibility of Unix domain sockets:
0on Windows, letting the OS assign any available port. This completely eliminatesEADDRINUSEconflicts..portfile in the socket directory..portfile but falls back to the legacy hash-based port if needed, ensuring it works with existing setups.Changes
startDaemonto listen on port 0 on Windows and write the result to the port file. UpdatedgetSocketPathandgetConnectionInfoto discover the port from the file.get_port_for_sessionto read from the.portfile. Updated all connection and health check logic to handle dynamic ports.Testing
.portfiles are handled gracefully by the connection retry logic.