comparison mercurial/httppeer.py @ 25085:e05734cd7902

httppeer: use try/except/finally
author Matt Mackall <mpm@selenic.com>
date Fri, 15 May 2015 09:57:02 -0500
parents cda18ded2c48
children 00ecc894138d
comparison
equal deleted inserted replaced
25084:7046c7e7fcb4 25085:e05734cd7902
196 tempname = changegroup.writebundle(self.ui, cg, None, type) 196 tempname = changegroup.writebundle(self.ui, cg, None, type)
197 fp = httpconnection.httpsendfile(self.ui, tempname, "rb") 197 fp = httpconnection.httpsendfile(self.ui, tempname, "rb")
198 headers = {'Content-Type': 'application/mercurial-0.1'} 198 headers = {'Content-Type': 'application/mercurial-0.1'}
199 199
200 try: 200 try:
201 try: 201 r = self._call(cmd, data=fp, headers=headers, **args)
202 r = self._call(cmd, data=fp, headers=headers, **args) 202 vals = r.split('\n', 1)
203 vals = r.split('\n', 1) 203 if len(vals) < 2:
204 if len(vals) < 2: 204 raise error.ResponseError(_("unexpected response:"), r)
205 raise error.ResponseError(_("unexpected response:"), r) 205 return vals
206 return vals 206 except socket.error, err:
207 except socket.error, err: 207 if err.args[0] in (errno.ECONNRESET, errno.EPIPE):
208 if err.args[0] in (errno.ECONNRESET, errno.EPIPE): 208 raise util.Abort(_('push failed: %s') % err.args[1])
209 raise util.Abort(_('push failed: %s') % err.args[1]) 209 raise util.Abort(err.args[1])
210 raise util.Abort(err.args[1])
211 finally: 210 finally:
212 fp.close() 211 fp.close()
213 os.unlink(tempname) 212 os.unlink(tempname)
214 213
215 def _calltwowaystream(self, cmd, fp, **args): 214 def _calltwowaystream(self, cmd, fp, **args):