71 self.ui.ferr = self.ui.fout = stringio() |
71 self.ui.ferr = self.ui.fout = stringio() |
72 def restore(self): |
72 def restore(self): |
73 val = self.ui.fout.getvalue() |
73 val = self.ui.fout.getvalue() |
74 self.ui.ferr, self.ui.fout = self.oldio |
74 self.ui.ferr, self.ui.fout = self.oldio |
75 return val |
75 return val |
76 def groupchunks(self, cg): |
76 def groupchunks(self, fh): |
77 # Don't allow untrusted settings because disabling compression or |
77 # Don't allow untrusted settings because disabling compression or |
78 # setting a very high compression level could lead to flooding |
78 # setting a very high compression level could lead to flooding |
79 # the server's network or CPU. |
79 # the server's network or CPU. |
80 z = zlib.compressobj(self.ui.configint('server', 'zliblevel', -1)) |
80 z = zlib.compressobj(self.ui.configint('server', 'zliblevel', -1)) |
81 while True: |
81 while True: |
82 chunk = cg.read(32768) |
82 chunk = fh.read(32768) |
83 if not chunk: |
83 if not chunk: |
84 break |
84 break |
85 data = z.compress(chunk) |
85 data = z.compress(chunk) |
86 # Not all calls to compress() emit data. It is cheaper to inspect |
86 # Not all calls to compress() emit data. It is cheaper to inspect |
87 # that here than to send it via the generator. |
87 # that here than to send it via the generator. |