mercurial/bundle2.py
changeset 21001 c93bb6a08fa1
parent 21000 4cae06ae1562
child 21004 27ab4b8d2503
--- a/mercurial/bundle2.py	Thu Apr 10 12:33:20 2014 -0700
+++ b/mercurial/bundle2.py	Fri Apr 11 08:04:16 2014 -0700
@@ -161,6 +161,8 @@
 _fpayloadsize = '>I'
 _fpartparamcount = '>BB'
 
+preferedchunksize = 4096
+
 def _makefpartparamsizes(nbparams):
     """return a struct format to read part parameter sizes
 
@@ -561,7 +563,13 @@
         Exists to handle the different methods to provide data to a part."""
         # we only support fixed size data now.
         # This will be improved in the future.
-        if len(self.data):
+        if util.safehasattr(self.data, 'next'):
+            buff = util.chunkbuffer(self.data)
+            chunk = buff.read(preferedchunksize)
+            while chunk:
+                yield chunk
+                chunk = buff.read(preferedchunksize)
+        elif len(self.data):
             yield self.data
 
 @parthandler('changegroup')