Mercurial > public > mercurial-scm > hg-stable
diff mercurial/sshrepo.py @ 13721:3458c15ab2f0
wireproto: fix handling of '*' args for HTTP and SSH
author | Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
---|---|
date | Tue, 22 Mar 2011 07:38:32 +0100 |
parents | da0ddd62b9d8 |
children | d16894e29f91 |
line wrap: on
line diff
--- a/mercurial/sshrepo.py Tue Mar 22 07:38:32 2011 +0100 +++ b/mercurial/sshrepo.py Tue Mar 22 07:38:32 2011 +0100 @@ -119,9 +119,24 @@ def _callstream(self, cmd, **args): self.ui.debug("sending %s command\n" % cmd) self.pipeo.write("%s\n" % cmd) - for k, v in sorted(args.iteritems()): + _func, names = wireproto.commands[cmd] + keys = names.split() + wireargs = {} + for k in keys: + if k == '*': + wireargs['*'] = args + break + else: + wireargs[k] = args[k] + del args[k] + for k, v in sorted(wireargs.iteritems()): self.pipeo.write("%s %d\n" % (k, len(v))) - self.pipeo.write(v) + if isinstance(v, dict): + for dk, dv in v.iteritems(): + self.pipeo.write("%s %d\n" % (dk, len(dv))) + self.pipeo.write(dv) + else: + self.pipeo.write(v) self.pipeo.flush() return self.pipei