No longer raise error when http authentication failed

* lisp/url/url-http.el (url-http-handle-authentication): Return t
instead of raising an error, instructing the caller to invoke the
request specific error handler (bug#50511).
This commit is contained in:
Jonas Bernoulli 2021-09-16 20:24:30 +02:00
parent 6825f5660f
commit 0b98ea5fbe
No known key found for this signature in database
GPG key ID: 230C2EFBB326D927

View file

@ -462,53 +462,53 @@ Return the number of characters removed."
;; credentials to the server, and they were wrong, so just give
;; up.
(let ((authorization (assoc "Authorization" url-http-extra-headers)))
(when (and authorization
(not (string-match "^NTLM " (cdr authorization))))
(error "Wrong authorization used for %s" url)))
(if (and authorization
(not (string-match "^NTLM " (cdr authorization)))) ;Bug#43566
t ;; Instruct caller to signal an error. Bug#50511
;; Find strongest supported auth.
(dolist (this-auth auths)
(setq this-auth (url-eat-trailing-space
(url-strip-leading-spaces
this-auth)))
(let* ((this-type
(downcase (if (string-match "[ \t]" this-auth)
(substring this-auth 0 (match-beginning 0))
this-auth)))
(registered (url-auth-registered this-type))
(this-strength (cddr registered)))
(when (and registered (> this-strength strength))
(setq auth this-auth
type this-type
strength this-strength))))
;; find strongest supported auth
(dolist (this-auth auths)
(setq this-auth (url-eat-trailing-space
(url-strip-leading-spaces
this-auth)))
(let* ((this-type
(downcase (if (string-match "[ \t]" this-auth)
(substring this-auth 0 (match-beginning 0))
this-auth)))
(registered (url-auth-registered this-type))
(this-strength (cddr registered)))
(when (and registered (> this-strength strength))
(setq auth this-auth
type this-type
strength this-strength))))
(if (not (url-auth-registered type))
(progn
(widen)
(goto-char (point-max))
(insert "<hr>Sorry, but I do not know how to handle "
(or type auth url "")
" authentication. If you'd like to write it,"
" please use M-x report-emacs-bug RET.<hr>")
;; We used to set a `status' var (declared "special") but I can't
;; find the corresponding let-binding, so it's probably an error.
;; FIXME: Maybe it was supposed to set `success', i.e. to return t?
;; (setq status t)
nil) ;; Not success yet.
(if (not (url-auth-registered type))
(progn
(widen)
(goto-char (point-max))
(insert "<hr>Sorry, but I do not know how to handle " (or type auth url "")
" authentication. If you'd like to write it,"
" please use M-x report-emacs-bug RET.<hr>")
;; We used to set a `status' var (declared "special") but I can't
;; find the corresponding let-binding, so it's probably an error.
;; FIXME: Maybe it was supposed to set `success', i.e. to return t?
;; (setq status t)
nil) ;; Not success yet.
(let* ((args (url-parse-args (subst-char-in-string ?, ?\; auth)))
(auth (url-get-authentication auth-url
(cdr-safe (assoc "realm" args))
type t args)))
(if (not auth)
t ;Success.
(push (cons (if proxy "Proxy-Authorization" "Authorization") auth)
url-http-extra-headers)
(let ((url-request-method url-http-method)
(url-request-data url-http-data)
(url-request-extra-headers url-http-extra-headers))
(url-retrieve-internal url url-callback-function
url-callback-arguments))
nil))))) ;; Not success yet.
(let* ((args (url-parse-args (subst-char-in-string ?, ?\; auth)))
(auth (url-get-authentication auth-url
(cdr-safe (assoc "realm" args))
type t args)))
(if (not auth)
t ;Success.
(push (cons (if proxy "Proxy-Authorization" "Authorization") auth)
url-http-extra-headers)
(let ((url-request-method url-http-method)
(url-request-data url-http-data)
(url-request-extra-headers url-http-extra-headers))
(url-retrieve-internal url url-callback-function
url-callback-arguments))
nil))))))) ;; Not success yet.
(defun url-http-parse-response ()
"Parse just the response code."