(url-http-handle-authentication): If there are several authentication

headers, use the strongest available method.
This commit is contained in:
Magnus Henoch 2006-11-08 20:34:47 +00:00
parent 29f85f09ca
commit 385b64c52a
2 changed files with 21 additions and 11 deletions

View file

@ -1,5 +1,9 @@
2006-11-08 Magnus Henoch <mange@freemail.hu>
* url-http.el (url-http-handle-authentication): If there are
several authentication headers, use the strongest available
method.
* url.el (url-retrieve-synchronously): Allow quitting when
inhibit-quit is t.

View file

@ -313,21 +313,27 @@ This allows us to use `mail-fetch-field', etc."
(type nil)
(url (url-recreate-url url-current-object))
(url-basic-auth-storage 'url-http-real-basic-auth-storage)
auth)
auth
(strength 0))
;; Cheating, but who cares? :)
(if proxy
(setq url-basic-auth-storage 'url-http-proxy-basic-auth-storage))
;; find first supported auth
(while auths
(setq auth (url-eat-trailing-space (url-strip-leading-spaces (car auths))))
(if (string-match "[ \t]" auth)
(setq type (downcase (substring auth 0 (match-beginning 0))))
(setq type (downcase auth)))
(if (url-auth-registered type)
(setq auths nil) ; no more check
(setq auth nil
auths (cdr auths))))
;; find strongest supported auth
(dolist (this-auth auths)
(setq this-auth (url-eat-trailing-space
(url-strip-leading-spaces
this-auth)))
(let* ((this-type
(if (string-match "[ \t]" this-auth)
(downcase (substring this-auth 0 (match-beginning 0)))
(downcase 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