Fixes issue 123.
diff --git a/Makefile b/Makefile
index 0a010be..015e511 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
 tests:
-	cd python2 && python2.4 httplib2test.py
+	-cd python2 && python2.4 httplib2test.py
 	-cd python2 && python2.5 httplib2test.py
-	cd python2 && python2.6 httplib2test.py
-	cd python3 && python3.1 httplib2test.py
+	-cd python2 && python2.6 httplib2test.py
+	-cd python3 && python3.1 httplib2test.py
 
 VERSION = $(shell python setup.py --version)
 DST = dist/httplib2-$(VERSION)
diff --git a/python2/httplib2/__init__.py b/python2/httplib2/__init__.py
index 81e9f93..00c6250 100644
--- a/python2/httplib2/__init__.py
+++ b/python2/httplib2/__init__.py
@@ -987,7 +987,9 @@
                         old_response = copy.deepcopy(response)
                         if not old_response.has_key('content-location'):
                             old_response['content-location'] = absolute_uri
-                        redirect_method = ((response.status == 303) and (method not in ["GET", "HEAD"])) and "GET" or method
+                        redirect_method = method
+                        if response.status == 303:
+                            redirect_method = "GET"
                         (response, content) = self.request(location, redirect_method, body=body, headers = headers, redirections = redirections - 1)
                         response.previous = old_response
                 else:
diff --git a/python2/httplib2test.py b/python2/httplib2test.py
index 3dcfe03..ed04799 100755
--- a/python2/httplib2test.py
+++ b/python2/httplib2test.py
@@ -26,6 +26,7 @@
 import unittest
 import urlparse
 
+
 # Python 2.3 support
 if not hasattr(unittest.TestCase, 'assertTrue'):
     unittest.TestCase.assertTrue = unittest.TestCase.failUnless
@@ -333,6 +334,14 @@
         self.assertEqual(response.previous.status, 301)
         self.assertEqual(response.previous.fromcache, True)
 
+    def testHead301(self):
+        # Test that we automatically follow 301 redirects
+        uri = urlparse.urljoin(base, "301/onestep.asis")
+        destination = urlparse.urljoin(base, "302/final-destination.txt")
+        (response, content) = self.http.request(uri, "HEAD")
+        self.assertEqual(response.status, 200)
+        self.assertEqual(response.previous.status, 301)
+        self.assertEqual(response.previous.fromcache, False)
 
     def testGet301NoRedirect(self):
         # Test that we automatically follow 301 redirects
diff --git a/python3/httplib2/__init__.py b/python3/httplib2/__init__.py
index 1f7096d..3907013 100644
--- a/python3/httplib2/__init__.py
+++ b/python3/httplib2/__init__.py
@@ -967,7 +967,9 @@
                         old_response = copy.deepcopy(response)
                         if 'content-location' not in old_response:
                             old_response['content-location'] = absolute_uri 
-                        redirect_method = ((response.status == 303) and (method not in ["GET", "HEAD"])) and "GET" or method
+                        redirect_method = method
+                        if response.status == 303:
+                          redirect_method = "GET"
                         (response, content) = self.request(location, redirect_method, body=body, headers = headers, redirections = redirections - 1)
                         response.previous = old_response
                 else:
diff --git a/python3/httplib2test.py b/python3/httplib2test.py
index ebaf416..5e7e930 100755
--- a/python3/httplib2test.py
+++ b/python3/httplib2test.py
@@ -330,6 +330,13 @@
         self.assertEqual(response.previous.status, 301)

         self.assertEqual(response.previous.fromcache, True)

 

+    def testHead301(self):

+        # Test that we automatically follow 301 redirects

+        uri = urllib.parse.urljoin(base, "301/onestep.asis")

+        (response, content) = self.http.request(uri, "HEAD")

+        self.assertEqual(response.status, 200)

+        self.assertEqual(response.previous.status, 301)

+        self.assertEqual(response.previous.fromcache, False)

 

     def testGet301NoRedirect(self):

         # Test that we automatically follow 301 redirects