-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tcpreuse: error on using tcpreuse with pnet #3129
Conversation
Sharing the TCP Listen socket with WebSocket doesn't work with pnet.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left some questions/comments, but generally LGTM
config/config.go
Outdated
if len(cfg.PSK) > 0 && cfg.ShareTCPListener { | ||
return nil, errors.New("cannot use shared TCP and WebSocket listener with PSK") | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, although technically the shared listener feature isn't coupled to having TCP + WS since you can currently enable it with just TCP (albeit at no real benefit) and down the road it might be configurable with HTTP as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changing this error test to just say "... shared TCP listener ...". This is in line with option one in #3119.
config/config.go
Outdated
defer func() { | ||
if createErr != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this cover everything not already stopped by fx and how does this play with the closing that happens when autonat fails to start?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This instantiation is so hacky :(. I believe if autonat fails this will end up closing things twice.
Maybe slightly better would be to move the config validation logic to a separate fn. Then cleanup on if that fn returns an error.
Co-authored-by: Marco Munizaga <[email protected]>
…bug-nat-port-mapping * origin/marco/bring-go-nat-home: (75 commits) go mod tidy reference internal package for mockgen mod tidy test-plans Make changes to internal nat library ci: move to actions/upload-artifact@v4 (#3152) tcpreuse: fix rcmgr accounting when tcp metrics are enabled (#3142) fix(net/nat): data race problem of `extAddr` (#3140) test: fix failing test (#3141) quicreuse: make it possible to use an application-constructed quic.Transport (#3122) nat: ignore mapping if external port is 0 (#3094) tcpreuse: error on using tcpreuse with pnet (#3129) chore: Update contribution guidelines (#3134) tcp: fix metrics test build directive (#3052) webrtc: upgrade pion/webrtc to v4 (#3098) ci: get back on the main release track of release checker (#3117) webtransport: fix docstring comment for getCurrentBucketStartTime chore: release v0.38.1 (#3114) fix(httpauth): Correctly handle concurrent requests on server (#3111) ci: Install specific protoc version when generating protobufs (#3112) fix(autorelay): Move relayFinder peer disconnect cleanup to separate goroutine (#3105) ...
Sharing the TCP Listen socket with WebSocket doesn't work with pnet.