Repository navigation
fix(transport): preserve wildcard socket source addresses - #174
Open
richard-ramos wants to merge 16 commits into
Open
richard-ramos wants to merge 16 commits into
richard-ramos wants to merge 16 commits into
Conversation
1 task done
Collaborator
Author
|
/review pro |
Collaborator
Author
|
/review pro |
|
🔍 OpenCodeReview found 5 issue(s) in this PR.
|
richard-ramos
marked this pull request as ready for review
September 22, 2026 18:29
richard-ramos
requested review from
gmelodie and
vladopajic
and removed request for
a team
September 22, 2026 18:29
gmelodie
reviewed
Sep 22, 2026
gmelodie
left a comment
Contributor
There was a problem hiding this comment.
- I think it should be possible to use only one definition of
ControlBufferfor all systems, no? - Instead of having huge portions of the code inside
whenblocks, we could have these blocks inside procs e.g. instead of two definitions ofprepareSourceAddrwe could have:
proc prepareSourceAddr() =
when defined(linux):
prepareSourceAddrPosix
when defined(windows):
prepareSourceAddrWinobs: also address cmsg logic which is duplicated in both definitions of prepareSourceAddr
-
Tests do not seem to cover windows +
WSASendMsg, IPv6pktinfosend or macOS. -
I see
recvFromwas dropped from windows and mac, but that means a perf drawback for UDP on these platforms. Can we not implement them for windows (leveragingWSARecvMsg) and mac (usingIP_RECVPKTINFOandIPV6_RECVPKTINFO)?
Refactor receiveWithTimeout and makeContext to use local variables for clarity.
vladopajic
approved these changes
Sep 23, 2026
gmelodie
approved these changes
Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Preserve the concrete local address when QUIC uses a wildcard-bound UDP socket
on Linux:
This keeps LSQUIC path identity stable while allowing one dual-stack listener
socket to dial IPv4 peers.
Dependency
Impact on Library Users
Linux endpoints can use wildcard listener sockets for outbound QUIC without
losing source-address control. Non-Linux behavior is unchanged.
Risk Assessment
The change affects Linux QUIC packet I/O. It retains the existing sendmmsg
batching and caps receive draining as before.
References