diff --git a/lib/modules/Standards.pmod/IDNA.pmod b/lib/modules/Standards.pmod/IDNA.pmod index 5957437f4a452a003bb88e68728a772febe57245..82141e739431931765d03d4d5e1264c1f1855c89 100644 --- a/lib/modules/Standards.pmod/IDNA.pmod +++ b/lib/modules/Standards.pmod/IDNA.pmod @@ -432,7 +432,13 @@ string to_unicode(string s) string zone_to_ascii(string s, int(0..1)|void allow_unassigned, int(0..1)|void use_std3_ascii_rules) { - return to_ascii((s/".")[*], allow_unassigned, use_std3_ascii_rules)*"."; + if(has_suffix(s, ".") && !has_suffix(s, "..")) + return sizeof(s)>1? + zone_to_ascii(s[..sizeof(s)-2], allow_unassigned, + use_std3_ascii_rules)+"." + : s; + else + return to_ascii((s/".")[*], allow_unassigned, use_std3_ascii_rules)*"."; }