Commits

Anonymous committed cf35f38

exchange: fix changeset pulling over http

http compress its stream. The were building a bogus stream where the first 10
bytes where uncompressed. Confusing the client.

Comments (0)

Files changed (2)

         if k in ('heads', 'common'):
             opts[k] = wireproto.decodelist(v)
     obsdata = _getobsmarkersstream(repo, **opts)
-    length = '%20i' % len(obsdata.getvalue())
-    def data():
-        yield length
-        for c in proto.groupchunks(obsdata):
-            yield c
-    return wireproto.streamres(data())
+    finaldata = StringIO()
+    obsdata = obsdata.getvalue()
+    finaldata.write('%20i' % len(obsdata))
+    finaldata.write(obsdata)
+    finaldata.seek(0)
+    return wireproto.streamres(proto.groupchunks(finaldata))
 
 def _obsrelsethashtree(repo):
     cache = []

hgext/simple4server.py

         if k in ('heads', 'common'):
             opts[k] = wireproto.decodelist(v)
     obsdata = _getobsmarkersstream(repo, **opts)
-    length = '%20i' % len(obsdata.getvalue())
-    def data():
-        yield length
-        for c in proto.groupchunks(obsdata):
-            yield c
-    return wireproto.streamres(data())
+    finaldata = StringIO()
+    obsdata = obsdata.getvalue()
+    finaldata.write('%20i' % len(obsdata))
+    finaldata.write(obsdata)
+    finaldata.seek(0)
+    return wireproto.streamres(proto.groupchunks(finaldata))
 
 
 # from evolve extension: 1a23c7c52a43