--- a/mercurial/wireproto.py Fri Feb 10 18:17:20 2017 +0100
+++ b/mercurial/wireproto.py Fri Feb 10 18:20:58 2017 +0100
@@ -839,7 +839,24 @@
raise error.Abort(bundle2requiredmain,
hint=bundle2requiredhint)
- chunks = exchange.getbundlechunks(repo, 'serve', **opts)
+ #chunks = exchange.getbundlechunks(repo, 'serve', **opts)
+ try:
+ chunks = exchange.getbundlechunks(repo, 'serve', **opts)
+ except error.Abort as exc:
+ # cleanly forward Abort error to the client
+ if not exchange.bundle2requested(opts.get('bundlecaps')):
+ if proto.name == 'http':
+ return ooberror(str(exc) + '\n')
+ raise # cannot do better for bundle1 + ssh
+ # bundle2 request expect a bundle2 reply
+ bundler = bundle2.bundle20(repo.ui)
+ manargs = [('message', str(exc))]
+ advargs = []
+ if exc.hint is not None:
+ advargs.append(('hint', exc.hint))
+ bundler.addpart(bundle2.bundlepart('error:abort',
+ manargs, advargs))
+ return streamres(gen=bundler.getchunks(), v1compressible=True)
return streamres(gen=chunks, v1compressible=True)
@wireprotocommand('heads')