+#elif defined(USE_ICU_IDNA)
+ char *ace_hostname = malloc(MAX_DOMAIN_NAME_LEN * sizeof(char));
+ UErrorCode errorCode = U_ZERO_ERROR;
+ UIDNAInfo info = UIDNA_INFO_INITIALIZER;
+ UIDNA *uts46 =
+ uidna_openUTS46(UIDNA_USE_STD3_RULES|UIDNA_NONTRANSITIONAL_TO_UNICODE,
+ &errorCode);
+ int32_t length = uidna_nameToASCII_UTF8(uts46,
+ host->name, strlen(host->name),
+ ace_hostname, MAX_DOMAIN_NAME_LEN, &info, &errorCode);
+ uidna_close(uts46);
+
+ if(errorCode != U_ZERO_ERROR || info.errors || length < 1)
+ infof(data, "Failed to convert %s to ACE;\n", host->name);
+ else {
+ host->encalloc = ace_hostname;
+ host->name = host->encalloc;