IDNA-related fixes for the URL library

* lisp/url/url-http.el (url-http-create-request): IDNA-encode
the Host: header.

* lisp/url/url-util.el (url-encode-url): Don't hex-encode
domain names, but leave them as UTF-8, so that they can be
IDNA-encoded later when contacting the host.
This commit is contained in:
Lars Ingebrigtsen 2015-12-29 00:11:06 +01:00
parent fc3965ed9b
commit 8b61c22ea1
2 changed files with 5 additions and 3 deletions

View file

@ -26,6 +26,7 @@
;;; Code:
(require 'cl-lib)
(require 'puny)
(eval-when-compile
(require 'subr-x))
@ -318,8 +319,9 @@ request.")
(url-scheme-get-property
(url-type url-http-target-url) 'default-port))
(format
"Host: %s:%d\r\n" host (url-port url-http-target-url))
(format "Host: %s\r\n" host))
"Host: %s:%d\r\n" (puny-encode-domain host)
(url-port url-http-target-url))
(format "Host: %s\r\n" (puny-encode-domain host)))
;; Who its from
(if url-personal-mail-address
(concat

View file

@ -468,7 +468,7 @@ should return it unchanged."
(and host
(not (string-match "\\`\\[.*\\]\\'" host))
(setf (url-host obj)
(url-hexify-string host url-host-allowed-chars)))
(decode-coding-string (url-host obj) 'utf-8)))
(if path
(setq path (url-hexify-string path url-path-allowed-chars)))