# HG changeset patch # User Yuya Nishihara # Date 1521963324 -32400 # Node ID dc1ed7fe33e45dcaa30b421d3281bd45b7818bd7 # Parent 45a669bad4212a7cdf0e1747784aede74590ac52 sshserver: do setbinary() by caller (API) In most cases, stdio should be set to binary mode by the dispatcher, so the sshserver does not have to take care of that. The only exception was hg-ssh, which is fixed by this patch. .. api:: ``sshserver()`` no longer sets stdin and stdout to binary mode. diff -r 45a669bad421 -r dc1ed7fe33e4 contrib/hg-ssh --- a/contrib/hg-ssh Sun Mar 25 16:39:17 2018 +0900 +++ b/contrib/hg-ssh Sun Mar 25 16:35:24 2018 +0900 @@ -43,6 +43,9 @@ ) def main(): + # Prevent insertion/deletion of CRs + dispatch.initstdio() + cwd = os.getcwd() readonly = False args = sys.argv[1:] diff -r 45a669bad421 -r dc1ed7fe33e4 mercurial/dispatch.py --- a/mercurial/dispatch.py Sun Mar 25 16:39:17 2018 +0900 +++ b/mercurial/dispatch.py Sun Mar 25 16:35:24 2018 +0900 @@ -83,7 +83,7 @@ def run(): "run the command in sys.argv" - _initstdio() + initstdio() req = request(pycompat.sysargv[1:]) err = None try: @@ -112,7 +112,7 @@ sys.exit(status & 255) if pycompat.ispy3: - def _initstdio(): + def initstdio(): pass def _silencestdio(): @@ -132,7 +132,7 @@ except IOError: pass else: - def _initstdio(): + def initstdio(): for fp in (sys.stdin, sys.stdout, sys.stderr): procutil.setbinary(fp) diff -r 45a669bad421 -r dc1ed7fe33e4 mercurial/wireprotoserver.py --- a/mercurial/wireprotoserver.py Sun Mar 25 16:39:17 2018 +0900 +++ b/mercurial/wireprotoserver.py Sun Mar 25 16:35:24 2018 +0900 @@ -798,10 +798,6 @@ hook.redirect(True) ui.fout = repo.ui.fout = ui.ferr - # Prevent insertion/deletion of CRs - procutil.setbinary(self._fin) - procutil.setbinary(self._fout) - def serve_forever(self): self.serveuntil(threading.Event()) sys.exit(0)