(defun puny-encode-domain (domain)
"Encode DOMAIN according to the IDNA/punycode algorith.
For instance, \"fśf.org\" => \"xn--ff-2sa.org\"."
- (mapconcat 'puny-encode-string (split-string domain "[.]") "."))
+ ;; The vast majority of domain names are not IDNA domain names, so
+ ;; add a check first to avoid doing unnecessary work.
+ (if (string-match "\\'[[:ascii:]]*\\'" domain)
+ domain
+ (mapconcat 'puny-encode-string (split-string domain "[.]") ".")))
(defun puny-encode-string (string)
"Encode STRING according to the IDNA/punycode algorithm.