summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/url/ChangeLog2
-rw-r--r--lisp/url/url-http.el12
2 files changed, 9 insertions, 5 deletions
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index d544cf0d083..690f6991910 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -2,6 +2,8 @@
* url-http.el (url-http-parse-headers): Pass the GnuTLS status of
the connection to the caller.
+ (url-http-parse-headers): When being redirected, make sure we
+ flush the previous certificate.
2014-12-08 Stefan Monnier <monnier@iro.umontreal.ca>
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index f5a214a89d8..34d325acf56 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -494,12 +494,14 @@ should be shown to the user."
(url-http-mark-connection-as-free (url-host url-current-object)
(url-port url-current-object)
url-http-process)
- ;; Pass the certificate on to the caller.
+ ;; Pass the https certificate on to the caller.
(when (gnutls-available-p)
- (when-let (status (gnutls-peer-status url-http-process))
- (setcar url-callback-arguments
- (plist-put (car url-callback-arguments)
- :peer status))))
+ (let ((status (gnutls-peer-status url-http-process)))
+ (when (or status
+ (plist-get (car url-callback-arguments) :peer))
+ (setcar url-callback-arguments
+ (plist-put (car url-callback-arguments)
+ :peer status)))))
(if (or (not (boundp 'url-http-end-of-headers))
(not url-http-end-of-headers))
(error "Trying to parse headers in odd buffer: %s" (buffer-name)))