# HG changeset patch # User Pierre-Yves David # Date 1400973609 25200 # Node ID 17755dd8c5098c0cbea277e5b94c4b0d1378cafe # Parent 75ff093d2763cf195883c4c79b8bcf3d18eaf8db bundle2: introduce a bundle2caps function The process of decoding remote bundle2caps blob into a dictionary is cumbersome. We move it into a small helper function. This will clarify code that reads bundle2 capabilities of peers and helps using it in new places. diff -r 75ff093d2763 -r 17755dd8c509 mercurial/bundle2.py --- a/mercurial/bundle2.py Thu May 22 12:58:07 2014 -0700 +++ b/mercurial/bundle2.py Sat May 24 16:20:09 2014 -0700 @@ -769,6 +769,13 @@ self.consumed = True return data +def bundle2caps(remote): + """return the bundlecapabilities of a peer as dict""" + raw = remote.capable('bundle2-exp') + if not raw and raw != '': + return {} + capsblob = urllib.unquote(remote.capable('bundle2-exp')) + return decodecaps(capsblob) @parthandler('b2x:changegroup') def handlechangegroup(op, inpart): diff -r 75ff093d2763 -r 17755dd8c509 mercurial/exchange.py --- a/mercurial/exchange.py Thu May 22 12:58:07 2014 -0700 +++ b/mercurial/exchange.py Sat May 24 16:20:09 2014 -0700 @@ -208,9 +208,7 @@ The only currently supported type of data is changegroup but this will evolve in the future.""" - capsblob = urllib.unquote(pushop.remote.capable('bundle2-exp')) - caps = bundle2.decodecaps(capsblob) - bundler = bundle2.bundle20(pushop.ui, caps) + bundler = bundle2.bundle20(pushop.ui, bundle2.bundle2caps(pushop.remote)) # create reply capability capsblob = bundle2.encodecaps(pushop.repo.bundle2caps) bundler.newpart('b2x:replycaps', data=capsblob)