comparison mercurial/wireprotoserver.py @ 41285:cf8677cd7286

ui: proxy protect/restorestdio() calls to update internal flag It should be better to manage the redirection flag solely by the ui class.
author Yuya Nishihara <yuya@tcha.org>
date Wed, 26 Sep 2018 21:41:52 +0900
parents f7011b44d205
children 3e47d1ec9da5
comparison
equal deleted inserted replaced
41284:b0e3f2d7c143 41285:cf8677cd7286
22 wireprotov2server, 22 wireprotov2server,
23 ) 23 )
24 from .utils import ( 24 from .utils import (
25 cborutil, 25 cborutil,
26 interfaceutil, 26 interfaceutil,
27 procutil,
28 ) 27 )
29 28
30 stringio = util.stringio 29 stringio = util.stringio
31 30
32 urlerr = util.urlerr 31 urlerr = util.urlerr
780 779
781 class sshserver(object): 780 class sshserver(object):
782 def __init__(self, ui, repo, logfh=None): 781 def __init__(self, ui, repo, logfh=None):
783 self._ui = ui 782 self._ui = ui
784 self._repo = repo 783 self._repo = repo
785 self._fin, self._fout = procutil.protectstdio(ui.fin, ui.fout) 784 self._fin, self._fout = ui.protectfinout()
786 # TODO: manage the redirection flag internally by ui
787 ui._finoutredirected = (self._fin, self._fout) != (ui.fin, ui.fout)
788 785
789 # Log write I/O to stdout and stderr if configured. 786 # Log write I/O to stdout and stderr if configured.
790 if logfh: 787 if logfh:
791 self._fout = util.makeloggingfileobject( 788 self._fout = util.makeloggingfileobject(
792 logfh, self._fout, 'o', logdata=True) 789 logfh, self._fout, 'o', logdata=True)
793 ui.ferr = util.makeloggingfileobject( 790 ui.ferr = util.makeloggingfileobject(
794 logfh, ui.ferr, 'e', logdata=True) 791 logfh, ui.ferr, 'e', logdata=True)
795 792
796 def serve_forever(self): 793 def serve_forever(self):
797 self.serveuntil(threading.Event()) 794 self.serveuntil(threading.Event())
798 procutil.restorestdio(self._ui.fin, self._ui.fout, 795 self._ui.restorefinout(self._fin, self._fout)
799 self._fin, self._fout)
800 sys.exit(0) 796 sys.exit(0)
801 797
802 def serveuntil(self, ev): 798 def serveuntil(self, ev):
803 """Serve until a threading.Event is set.""" 799 """Serve until a threading.Event is set."""
804 _runsshserver(self._ui, self._repo, self._fin, self._fout, ev) 800 _runsshserver(self._ui, self._repo, self._fin, self._fout, ev)