Implement support of listening on IPv6 #13
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.
Listening on IPv6 in addition to IPv4 requires more complex implementation to handle edge cases:
Two separate sockets need to be created for both IPv4 and IPv6, because some operating systems can only create IPV6_V6ONLY sockets by default and there's no way to query this on runtime.
The given addresses are resolved to allow listening on localhost on both IPv4 and IPv6 addresses.
Note that previous implementation may already fail on certain scenarios on machines that only have IPv4 outbound connectivity. For example, IPv6 may be enabled for link-local addresses and clients will pick IPv6 address by default when connecting to localhost and fail as beauty server listens only on IPv4 there.