Commits

Anonymous committed 7fe06f3

exchange: fix push markers over wire protocol for http peer

Http actually interpret the data passed to _callpush expecting them to a bundle.
Interpretation of a markers stream as a bundle obviously led to crash.

Comments (0)

Files changed (1)

 from mercurial import error
 from mercurial import exchange
 from mercurial import extensions
+from mercurial import httppeer
 from mercurial import hg
 from mercurial import lock as lockmod
 from mercurial import merge
         self.ui.status(_('remote: '), l)
     return ret
 
+@eh.addattr(httppeer.httppeer, 'evoext_pushobsmarkers_0')
+def httpclient_pushobsmarkers(self, obsfile):
+    """httpprotocol peer method
+    (Cannot simply use _callpush as http is doing some special handling)"""
+    self.requirecap('_evoext_pushobsmarkers_0',
+                    _('push obsolete markers faster'))
+    ret, output = self._call('evoext_pushobsmarkers_0', data=obsfile)
+    for l in output.splitlines(True):
+        if l.strip():
+            self.ui.status(_('remote: '), l)
+    return ret
+
 
 def srv_pushobsmarkers(repo, proto):
     """wireprotocol command"""