Subject: bug#54921: eww/url mishandles IDN over proxy

From: Lars Ingebrigtsen <[email-masked]>
Date: Thu, 14 Apr 2022 15:15:14 +0200

Andreas Schwab <[email-masked]> writes:

> I have set https_proxy=http://localhost:8118/ in the environment, which
> is picked up by url to set url-proxy-services.

Hm, right...

I'm not at all familiar with this code, so here's a stab in the dark.
Does this fix the problem?

diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index daeba17031..22e003d22d 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -1405,10 +1405,12 @@ url-https-proxy-connect
               (and proxy-auth
                    (concat "Proxy-Authorization: " proxy-auth "\r\n")))
             "\r\n")
-    (url-host url-current-object)
+    (url-http--encode-string
+     (puny-encode-domain (url-host url-current-object)))
     (or (url-port url-current-object)
         url-https-default-port)
-    (url-host url-current-object))))
+    (url-http--encode-string
+     (puny-encode-domain (url-host url-current-object))))))
 
 (defun url-https-proxy-after-change-function (_st _nd _length)
   (let* ((process-buffer (current-buffer))

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no