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

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

Andreas Schwab <[email-masked]> writes:

> error in process filter: url-https-proxy-after-change-function: Error:
> (error Non-ASCII hostname www.pimmelgate-süd.de detected, please use
> puny-encode-domain)

Try:

diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index daeba17031..06e7dbf756 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))
@@ -1430,12 +1432,12 @@ url-https-proxy-after-change-function
             (condition-case e
                 (let ((tls-connection (gnutls-negotiate
                                        :process proc
-                                       :hostname (url-host url-current-object)
+                                       :hostname (puny-encode-domain (url-host url-current-object))
                                        :verify-error nil)))
                   ;; check certificate validity
                   (setq tls-connection
                         (nsm-verify-connection tls-connection
-                                               (url-host url-current-object)
+                                               (puny-encode-domain (url-host url-current-object))
                                                (url-port url-current-object)))
                   (with-current-buffer process-buffer (erase-buffer))
                   (set-process-buffer tls-connection process-buffer)

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