bundle2: only use callable return as reply handler
When a bundle2 parts generator returns a non callable value, it should not be
used as a reply handler. The changegroup part generator is already having this
case of behavior when there is no changegroup to push. This changeset prevent a
crash for user of the experimentable bundle2 feature.
--- a/mercurial/exchange.py Thu Jul 24 14:29:08 2014 -0700
+++ b/mercurial/exchange.py Wed Jul 02 16:13:48 2014 +0200
@@ -242,7 +242,8 @@
replyhandlers = []
for partgen in bundle2partsgenerators:
ret = partgen(pushop, bundler)
- replyhandlers.append(ret)
+ if callable(ret):
+ replyhandlers.append(ret)
# do not push if nothing to push
if bundler.nbparts <= 1:
return
--- a/tests/test-bundle2.t Thu Jul 24 14:29:08 2014 -0700
+++ b/tests/test-bundle2.t Wed Jul 02 16:13:48 2014 +0200
@@ -957,7 +957,6 @@
> if reason == 'race':
> # 20 Bytes of crap
> bundler.newpart('b2x:check:heads', data='01234567890123456789')
- > return lambda op: None
>
> @bundle2.parthandler("test:abort")
> def handleabort(op, part):