response error handling rework
authorKenneth Reitz <me@kennethreitz.com>
Sat, 13 Aug 2011 17:01:44 +0000 (13:01 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Sat, 13 Aug 2011 17:01:44 +0000 (13:01 -0400)
requests/models.py

index 51954310f755e090b7fc4a7e6c3f8e05255550fa..b90a2bda25de679f6ea515f93dc1f6f7b8b18aa4 100644 (file)
@@ -158,7 +158,7 @@ class Request(object):
         return opener.open
 
 
-    def _build_response(self, resp):
+    def _build_response(self, resp, is_error=False):
         """Build internal :class:`Response <models.Response>` object from given response."""
 
         def build(resp):
@@ -173,6 +173,9 @@ class Request(object):
             except AttributeError:
                 pass
 
+            if is_error:
+                response.error = resp
+
             response.url = getattr(resp, 'url', None)
 
             return response
@@ -312,9 +315,8 @@ class Request(object):
                     if isinstance(why.reason, socket.timeout):
                         why = Timeout(why)
 
-                self._build_response(why)
-                if not self.redirect:
-                    self.response.error = why
+                self._build_response(why, is_error=True)
+
 
             else:
                 self._build_response(resp)