-
Notifications
You must be signed in to change notification settings - Fork 192
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
NAT traversal: ICE-esque candidate selection #134
Conversation
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.
I've done an initial review, found one likely oversight and a few nits. I'll wait until this is not marked Draft to do a more thorough review and perhaps some testing?
Meta: the fact this was split to more or less incremental commits helped with review. Commits like 23f391b client: break out peer diff printing to function for readability
that are strictly "just move stuff around" or strictly "add new functionality" are the best. (OTOH the very same function is moved again in f560598) I still don't have a good idea what the best balance between prototyping friendliness and review friendliness is.
Co-authored-by: Matěj Laitl <[email protected]>
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.
Looks good, I was finally able to grasp this in its entirety! Only the netlink response parsing code is somewhat gnarly, but that's likely due to inherent complexity of the netlink API itself.
I've added a few nits/suggestions.
Co-authored-by: Matěj Laitl <[email protected]>
I was just giving this a try, going from 1.4.1, and server fails to start: Revert and it starts ok again: |
This change adds the ability for peers to report additional candidate endpoints for other peers to attempt connections with outside of the endpoint reported by the coordinating server.
While not a complete solution to the full spectrum of NAT traversal issues (TURN-esque proxying is still notably missing), it allows peers within the same NAT to connect to each other via their LAN addresses, which is a win nonetheless. In the future, more advanced candidate discovery could be used to punch through additional types of NAT cone types as well.
Related discussions #109 and #115