Mercurial > emacs
changeset 73626:064fe7ff7747
(url-http-handle-authentication): If there are several authentication
headers, use the first with a supported method.
author | Magnus Henoch <mange@freemail.hu> |
---|---|
date | Thu, 02 Nov 2006 23:06:20 +0000 |
parents | b4c429c0017c |
children | e7c14a8e6688 |
files | lisp/url/ChangeLog lisp/url/url-http.el |
diffstat | 2 files changed, 22 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/url/ChangeLog Thu Nov 02 22:13:22 2006 +0000 +++ b/lisp/url/ChangeLog Thu Nov 02 23:06:20 2006 +0000 @@ -1,3 +1,9 @@ +2006-11-03 Shun-ichi GOTO <gotoh@taiyo.co.jp> (tiny change) + + * url-http.el (url-http-handle-authentication): If there are + several authentication headers, use the first with a supported + method. + 2006-11-01 Magnus Henoch <mange@freemail.hu> * url-http.el (url-http-create-request): Use buffer-local
--- a/lisp/url/url-http.el Thu Nov 02 22:13:22 2006 +0000 +++ b/lisp/url/url-http.el Thu Nov 02 23:06:20 2006 +0000 @@ -305,21 +305,29 @@ (declare (special status success url-http-method url-http-data url-callback-function url-callback-arguments)) (url-http-debug "Handling %s authentication" (if proxy "proxy" "normal")) - (let ((auth (or (mail-fetch-field (if proxy "proxy-authenticate" "www-authenticate")) - "basic")) + (let ((auths (or (nreverse + (mail-fetch-field + (if proxy "proxy-authenticate" "www-authenticate") + nil nil t)) + '("basic"))) (type nil) (url (url-recreate-url url-current-object)) (url-basic-auth-storage 'url-http-real-basic-auth-storage) - ) - + auth) ;; Cheating, but who cares? :) (if proxy (setq url-basic-auth-storage 'url-http-proxy-basic-auth-storage)) - (setq auth (url-eat-trailing-space (url-strip-leading-spaces auth))) - (if (string-match "[ \t]" auth) - (setq type (downcase (substring auth 0 (match-beginning 0)))) - (setq type (downcase auth))) + ;; 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)))) (if (not (url-auth-registered type)) (progn