Add support for IDNs in HOSTS files. #673
Merged
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.
By submitting this pull request, I confirm the following (please check boxes, eg [X]) Failure to fill the template will close your PR:
Please submit all pull requests against the
development
branch. Failure to do so will delay or deny your requestHow familiar are you with the codebase?:
10
Use
libidn
. This will improve support for internationalized domain names (IDNs) by adding an automated conversion from locale's encoding to a legit ASCII domain name string. We do not uselibidn2
as there are some bug reports and we found issues trying to compile statically againstlibidn2
. Additionally, there seems to be no clear advantage compared to usinglibidn
.For this to work, we need to add
libidn11-dev
to our CI containers. Until then, this PR stays marked as[WIP]
. Note that we have not added this before v5.0 as we were still loading the domains from HOSTS files. The automated conversion would have slowed down the initial startup of FTL by about one order of magnitude which would have been unacceptable on low-end hardware (one minute or more). It was always possible to enable IDN when compiling FTL from source as we described what needs to be done in the Makefile.