From a66e031166183fde3cccfc0808aff447d5b0157a Mon Sep 17 00:00:00 2001
From: Patrick Aikens <paikens@gmail.com>
Date: Sat, 1 Mar 2014 10:07:35 -0500
Subject: gist_plugin: Handle multiple redirects, stopping if we find a
 circular reference

---
 plugins/gist_tag.rb | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'plugins')

diff --git a/plugins/gist_tag.rb b/plugins/gist_tag.rb
index 9bdd14dc..61a9cc1e 100644
--- a/plugins/gist_tag.rb
+++ b/plugins/gist_tag.rb
@@ -78,8 +78,11 @@ module Jekyll
       gist_url = get_gist_url_for(gist, file)
       data     = get_web_content(gist_url)
 
-      if data.code.to_i == 302
+      locations = Array.new
+      while (data.code.to_i == 301 || data.code.to_i == 302)
         data = handle_gist_redirecting(data)
+        break if locations.include? data.header['Location']
+        locations << data.header['Location']
       end
 
       if data.code.to_i != 200
@@ -95,6 +98,7 @@ module Jekyll
       if redirected_url.nil? || redirected_url.empty?
         raise ArgumentError, "GitHub replied with a 302 but didn't provide a location in the response headers."
       end
+
       get_web_content(redirected_url)
     end
 
-- 
cgit v1.2.1