Mercurial > public > mercurial-scm > hg-stable
comparison 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 |
comparison
equal
deleted
inserted
replaced
13720:9c4e04fe267e | 13721:3458c15ab2f0 |
---|---|
117 __del__ = cleanup | 117 __del__ = cleanup |
118 | 118 |
119 def _callstream(self, cmd, **args): | 119 def _callstream(self, cmd, **args): |
120 self.ui.debug("sending %s command\n" % cmd) | 120 self.ui.debug("sending %s command\n" % cmd) |
121 self.pipeo.write("%s\n" % cmd) | 121 self.pipeo.write("%s\n" % cmd) |
122 for k, v in sorted(args.iteritems()): | 122 _func, names = wireproto.commands[cmd] |
123 keys = names.split() | |
124 wireargs = {} | |
125 for k in keys: | |
126 if k == '*': | |
127 wireargs['*'] = args | |
128 break | |
129 else: | |
130 wireargs[k] = args[k] | |
131 del args[k] | |
132 for k, v in sorted(wireargs.iteritems()): | |
123 self.pipeo.write("%s %d\n" % (k, len(v))) | 133 self.pipeo.write("%s %d\n" % (k, len(v))) |
124 self.pipeo.write(v) | 134 if isinstance(v, dict): |
135 for dk, dv in v.iteritems(): | |
136 self.pipeo.write("%s %d\n" % (dk, len(dv))) | |
137 self.pipeo.write(dv) | |
138 else: | |
139 self.pipeo.write(v) | |
125 self.pipeo.flush() | 140 self.pipeo.flush() |
126 | 141 |
127 return self.pipei | 142 return self.pipei |
128 | 143 |
129 def _call(self, cmd, **args): | 144 def _call(self, cmd, **args): |