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.
--- 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)