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
--- 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())