commandserver: drop tell() and seek() from channels (issue5049) stable
authorYuya Nishihara <yuya@tcha.org>
Wed, 20 Jan 2016 00:08:00 +0900
branchstable
changeset 27915 5f2a308bac94
parent 27914 505a10b504ed
child 27916 9a09a9cfa503
commandserver: drop tell() and seek() from channels (issue5049) These operations are obviously invalid for file-like channels because they will read or write protocol headers. This patch works around the issue that "hg archive" generates a corrupted zip file on Windows commandserver because of unusable tell() implementation. But the problem still occurs without using a commandserver. $ hg archive -R not-small-repo -t zip - | cat > invalid.zip So, this patch cannot fix the issue5049 completely.
mercurial/commandserver.py
--- a/mercurial/commandserver.py	Wed Jan 20 11:21:13 2016 -0800
+++ b/mercurial/commandserver.py	Wed Jan 20 00:08:00 2016 +0900
@@ -55,7 +55,7 @@
         self.out.flush()
 
     def __getattr__(self, attr):
-        if attr in ('isatty', 'fileno'):
+        if attr in ('isatty', 'fileno', 'tell', 'seek'):
             raise AttributeError(attr)
         return getattr(self.out, attr)
 
@@ -139,7 +139,7 @@
         return l
 
     def __getattr__(self, attr):
-        if attr in ('isatty', 'fileno'):
+        if attr in ('isatty', 'fileno', 'tell', 'seek'):
             raise AttributeError(attr)
         return getattr(self.in_, attr)