Merged
Conversation
IPv6 nameservers can be significantly longer than 16 characters in length. For example, `2001:0db8:85a3:0000:0000:8a2e:0370:7334` is 39 characters long, and certain syntax elements (e.g. zone indices) can make them even longer. This patch allows up to 256 characters for the nameserver, which is large enough to contain the maximum length of any hostname (~253 ASCII characters), and definitely enough for any IPv4 or IPv6 address.
Owner
| Thanks, this looks good. I don't think it is valid to use hostnames to specify nameservers though |
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.
IPv6 nameservers can be significantly longer than 16 characters in length. For example,
2001:0db8:85a3:0000:0000:8a2e:0370:7334is 39 characters long, and certain syntax elements (e.g. zone indices) can make them even longer.This patch allows up to 256 characters for the nameserver, which is large enough to contain the maximum length of any hostname (~253 ASCII characters), and definitely enough for any IPv4 or IPv6 address.
Testing
I am using an IPv6 nameserver whose IP address is longer than 16 bytes. Without this patch, I get the error
iodine: Cannot lookup nameserver '2001:db8:85a3:0': Unknown error. With this patch, Iodine works correctly.Note that the
Unknown errorpart occurs because my getaddrinfo returns 8 ("nodename nor servname provided, or not known") but this gets translated into -1 byget_addr, and then -1 gets passed intogai_strerror. This is unfortunate as the actual error gets swallowed; a potentially better error handling strategy would be to returnaddrlenin a pointer parameter and have only 0 be a successful result, but this would necessitate a number of changes throughout the code.