emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/url/url-http.el,v


From: Chong Yidong
Subject: [Emacs-diffs] Changes to emacs/lisp/url/url-http.el,v
Date: Fri, 13 Apr 2007 14:58:57 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      07/04/13 14:58:57

Index: url-http.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/url/url-http.el,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -b -r1.52 -r1.53
--- url-http.el 1 Apr 2007 15:39:13 -0000       1.52
+++ url-http.el 13 Apr 2007 14:58:56 -0000      1.53
@@ -556,6 +556,20 @@
            (let ((url-request-method url-http-method)
                 (url-request-data url-http-data)
                 (url-request-extra-headers url-http-extra-headers))
+            ;; Check existing number of redirects
+            (if (or (< url-max-redirections 0)
+                    (and (> url-max-redirections 0)
+                         (let ((events (car url-callback-arguments))
+                               (old-redirects 0))
+                           (while events
+                             (if (eq (car events) :redirect)
+                                 (setq old-redirects (1+ old-redirects)))
+                             (and (setq events (cdr events))
+                                  (setq events (cdr events))))
+                           (< old-redirects url-max-redirections))))
+                ;; url-max-redirections hasn't been reached, so go
+                ;; ahead and redirect.
+                (progn
             ;; Remember that the request was redirected.
             (setf (car url-callback-arguments)
                   (nconc (list :redirect redirect-uri)
@@ -570,7 +584,15 @@
                   (url-retrieve-internal
                    redirect-uri url-callback-function
                    url-callback-arguments))
-             (url-mark-buffer-as-dead (current-buffer))))))
+                  (url-mark-buffer-as-dead (current-buffer)))
+              ;; We hit url-max-redirections, so issue an error and
+              ;; stop redirecting.
+              (url-http-debug "Maximum redirections reached")
+              (setf (car url-callback-arguments)
+                    (nconc (list :error (list 'error 'http-redirect-limit
+                                              redirect-uri))
+                           (car url-callback-arguments)))
+              (setq success t))))))
       (4                               ; Client error
        ;; 400 Bad Request
        ;; 401 Unauthorized




reply via email to

[Prev in Thread] Current Thread [Next in Thread]