--- a/mercurial/httppeer.py Mon Mar 14 21:15:59 2016 -0400
+++ b/mercurial/httppeer.py Fri Mar 11 11:37:00 2016 -0500
@@ -97,7 +97,22 @@
self.ui.debug("sending %s command\n" % cmd)
q = [('cmd', cmd)]
headersize = 0
- if True:
+ # Important: don't use self.capable() here or else you end up
+ # with infinite recursion when trying to look up capabilities
+ # for the first time.
+ postargsok = self.caps is not None and 'httppostargs' in self.caps
+ # TODO: support for httppostargs when data is a file-like
+ # object rather than a basestring
+ canmungedata = not data or isinstance(data, basestring)
+ if postargsok and canmungedata:
+ strargs = urllib.urlencode(sorted(args.items()))
+ if strargs:
+ if not data:
+ data = strargs
+ elif isinstance(data, basestring):
+ data = strargs + data
+ headers['X-HgArgs-Post'] = len(strargs)
+ else:
if len(args) > 0:
httpheader = self.capable('httpheader')
if httpheader: