summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Rühsen <tim.ruehsen@gmx.de>2017-01-13 09:36:33 +0100
committerDaniel Stenberg <daniel@haxx.se>2017-01-13 10:21:25 +0100
commitf30cbcac11f5a627992f0c48cff91135808fa70f (patch)
tree069541a00bd1ca635b6e59deecfc3523f91c34a1
parentcd6b99ef324a047c5dc49bbf27c1d40a3de2b14d (diff)
downloadcurl-f30cbcac11f5a627992f0c48cff91135808fa70f.tar.gz
IDN: Use TR46 'transitional' for toASCII translations
References: http://unicode.org/faq/idn.html http://unicode.org/reports/tr46 Closes #1206
-rw-r--r--lib/url.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/url.c b/lib/url.c
index c7a91a4f7..29beb3853 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -4010,7 +4010,12 @@ static void fix_hostname(struct connectdata *conn, struct hostname *host)
#ifdef USE_LIBIDN2
if(idn2_check_version(IDN2_VERSION)) {
char *ace_hostname = NULL;
- int rc = idn2_lookup_ul((const char *)host->name, &ace_hostname, 0);
+#ifdef IDN2_TRANSITIONAL
+ int flags = IDN2_NFC_INPUT | IDN2_TRANSITIONAL;
+#else
+ int flags = IDN2_NFC_INPUT;
+#endif
+ int rc = idn2_lookup_ul((const char *)host->name, &ace_hostname, flags);
if(rc == IDN2_OK) {
host->encalloc = (char *)ace_hostname;
/* change the name pointer to point to the encoded hostname */