changeset 78733:0d24e0627e57

Diane Murray <disumu at x3y2z1.net> (url-http-parse-headers): Bind the current buffer rather than calling `url-mark-buffer-as-dead' with `current-buffer', so that the correct buffer is killed if `url-retrieve-synchronously' gets redirected to a new URL.
author Glenn Morris <rgm@gnu.org>
date Mon, 03 Sep 2007 19:29:18 +0000
parents 2c07822e60f6
children 46e7594406bc
files lisp/url/url-http.el
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/url/url-http.el	Sun Sep 02 23:45:31 2007 +0000
+++ b/lisp/url/url-http.el	Mon Sep 03 19:29:18 2007 +0000
@@ -429,7 +429,8 @@
       (when (and connection
 		 (string= (downcase connection) "close"))
 	(delete-process url-http-process)))))
-  (let ((class nil)
+  (let ((buffer (current-buffer))
+	(class nil)
 	(success nil))
     (setq class (/ url-http-response-status 100))
     (url-http-debug "Parsed HTTP headers: class=%d status=%d" class url-http-response-status)
@@ -447,7 +448,7 @@
        ;; 100 = Continue with request
        ;; 101 = Switching protocols
        ;; 102 = Processing (Added by DAV)
-       (url-mark-buffer-as-dead (current-buffer))
+       (url-mark-buffer-as-dead buffer)
        (error "HTTP responses in class 1xx not supported (%d)" url-http-response-status))
       (2				; Success
        ;; 200 Ok
@@ -461,14 +462,14 @@
        (case url-http-response-status
 	 ((204 205)
 	  ;; No new data, just stay at the same document
-	  (url-mark-buffer-as-dead (current-buffer))
+	  (url-mark-buffer-as-dead buffer)
 	  (setq success t))
 	 (otherwise
 	  ;; Generic success for all others.  Store in the cache, and
 	  ;; mark it as successful.
 	  (widen)
 	  (if (and url-automatic-caching (equal url-http-method "GET"))
-	      (url-store-in-cache (current-buffer)))
+	      (url-store-in-cache buffer))
 	  (setq success t))))
       (3				; Redirection
        ;; 300 Multiple choices
@@ -584,7 +585,7 @@
 			(url-retrieve-internal
 			 redirect-uri url-callback-function
 			 url-callback-arguments))
-		   (url-mark-buffer-as-dead (current-buffer)))
+		   (url-mark-buffer-as-dead buffer))
 	       ;; We hit url-max-redirections, so issue an error and
 	       ;; stop redirecting.
 	       (url-http-debug "Maximum redirections reached")
@@ -625,7 +626,7 @@
 	  (url-http-handle-authentication nil))
 	 (402
 	  ;; This code is reserved for future use
-	  (url-mark-buffer-as-dead (current-buffer))
+	  (url-mark-buffer-as-dead buffer)
 	  (error "Somebody wants you to give them money"))
 	 (403
 	  ;; The server understood the request, but is refusing to
@@ -780,7 +781,7 @@
        (error "Unknown class of HTTP response code: %d (%d)"
 	      class url-http-response-status)))
     (if (not success)
-	(url-mark-buffer-as-dead (current-buffer)))
+	(url-mark-buffer-as-dead buffer))
     (url-http-debug "Finished parsing HTTP headers: %S" success)
     (widen)
     success))