httppeer: move error handling and response wrapping into sendrequest
authorGregory Szorc <gregory.szorc@gmail.com>
Tue, 10 Apr 2018 12:12:07 -0700
changeset 37550 b5862ee01abe
parent 37549 66d1001e1500
child 37551 946eb204ba67
httppeer: move error handling and response wrapping into sendrequest This is common for all HTTP requests. It should be part of sendrequest(). Differential Revision: https://phab.mercurial-scm.org/D3235
mercurial/httppeer.py
--- a/mercurial/httppeer.py	Tue Apr 10 10:51:12 2018 -0700
+++ b/mercurial/httppeer.py	Tue Apr 10 12:12:07 2018 -0700
@@ -284,10 +284,24 @@
 
         start = util.timer()
 
-    res = opener.open(req)
-    if ui.configbool('devel', 'debug.peer-request'):
-        dbg(line % '  finished in %.4f seconds (%s)'
-            % (util.timer() - start, res.code))
+    try:
+        res = opener.open(req)
+    except urlerr.httperror as inst:
+        if inst.code == 401:
+            raise error.Abort(_('authorization failed'))
+        raise
+    except httplib.HTTPException as inst:
+        ui.debug('http error requesting %s\n' %
+                 util.hidepassword(req.get_full_url()))
+        ui.traceback()
+        raise IOError(None, inst)
+    finally:
+        if ui.configbool('devel', 'debug.peer-request'):
+            dbg(line % '  finished in %.4f seconds (%s)'
+                % (util.timer() - start, res.code))
+
+    # Insert error handlers for common I/O failures.
+    _wraphttpresponse(res)
 
     return res
 
@@ -346,19 +360,7 @@
                                            self._caps, self.capable,
                                            self._url, cmd, args)
 
-        try:
-            resp = sendrequest(self.ui, self._urlopener, req)
-        except urlerr.httperror as inst:
-            if inst.code == 401:
-                raise error.Abort(_('authorization failed'))
-            raise
-        except httplib.HTTPException as inst:
-            self.ui.debug('http error while sending %s command\n' % cmd)
-            self.ui.traceback()
-            raise IOError(None, inst)
-
-        # Insert error handlers for common I/O failures.
-        _wraphttpresponse(resp)
+        resp = sendrequest(self.ui, self._urlopener, req)
 
         # record the url we got redirected to
         resp_url = pycompat.bytesurl(resp.geturl())