Skip to content
This repository was archived by the owner on Aug 15, 2025. It is now read-only.

Conversation

@zamderax
Copy link
Member

@zamderax zamderax commented Jul 29, 2025

Fixed Windows CI build failures by separating build configurations for Windows and Unix platforms. Windows builds now use --no-default-features to avoid QUIC/TLS dependencies that require NASM and cmake. Fixed a flaky listener test that was failing on Windows due to binding to 0.0.0.0 (now explicitly uses 127.0.0.1). Implemented proper synchronization in the listener to ensure the accept loop is ready before start() returns, eliminating race conditions. Added documentation for Windows developers about NASM/cmake requirements for full QUIC/TLS support.

🤖 Generated with Claude Code

Developer and others added 5 commits July 28, 2025 21:02
- Separate build and test steps for Windows vs Unix platforms
- Windows CI now builds and tests without default features to avoid NASM/cmake requirements
- Unix platforms (Linux/macOS) continue to build with full QUIC/TLS support
- Add Dockerfile.test for Linux testing verification
- All tests pass on both Windows (core features) and Linux (all features)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Document CMake and NASM requirements for building with QUIC/TLS features
- Add installation instructions for all major platforms
- Clarify that these features can be disabled with --no-default-features

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed Windows-specific issue where listener bound to 0.0.0.0 but client tried to connect to it
- Explicitly bind to 127.0.0.1 to ensure valid connection address on Windows
- Added small timing adjustments to ensure accept loop is ready
- Test now passes reliably on both Windows and Linux (verified with 20 consecutive runs)

The root cause was Windows error 10049: "The requested address is not valid in its context"
which occurs when trying to connect to 0.0.0.0 address.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed race condition where listener.start() returned before accept loop was ready
- Added oneshot channel to ensure accept loop is ready before start() returns
- Removed sleep workarounds from tests - they're no longer needed
- This is the proper fix for the Windows flakiness issue

The listener now guarantees that it's ready to accept connections when
start() completes, eliminating the need for arbitrary delays in user code.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@zamderax zamderax merged commit 9ba8e1f into main Jul 29, 2025
3 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants