# HG changeset patch # User Jun Wu # Date 2016-02-29 13:46:54 # Node ID e00e57d836535aadcb13337613d2f891492d8e04 # Parent 3ab370f84a23365b90dd91d08c3f540f6af8e05c chgserver: pass hashstate and base server address to chgcmdserver In order to detect a hash change from a request handler, chg must know the original hashstate. It also needs the base server address to figure out redirect addresses. diff --git a/hgext/chgserver.py b/hgext/chgserver.py --- a/hgext/chgserver.py +++ b/hgext/chgserver.py @@ -334,11 +334,13 @@ class channeledsystem(object): ] class chgcmdserver(commandserver.server): - def __init__(self, ui, repo, fin, fout, sock): + def __init__(self, ui, repo, fin, fout, sock, hashstate, baseaddress): super(chgcmdserver, self).__init__( _newchgui(ui, channeledsystem(fin, fout, 'S')), repo, fin, fout) self.clientsock = sock self._oldios = [] # original (self.ch, ui.fp, fd) before "attachio" + self.hashstate = hashstate + self.baseaddress = baseaddress def cleanup(self): # dispatch._runcatch() does not flush outputs if exception is not @@ -493,7 +495,8 @@ class _requesthandler(SocketServer.Strea os.setpgid(0, 0) ui = self.server.ui repo = self.server.repo - sv = chgcmdserver(ui, repo, self.rfile, self.wfile, self.connection) + sv = chgcmdserver(ui, repo, self.rfile, self.wfile, self.connection, + self.server.hashstate, self.server.baseaddress) try: try: sv.serve() @@ -588,6 +591,8 @@ class chgunixservice(commandserver.unixs SocketServer.UnixStreamServer): ui = self.ui repo = self.repo + hashstate = self.hashstate + baseaddress = self.baseaddress self.server = cls(self.address, _requesthandler) self.server.idletimeout = self.ui.configint( 'chgserver', 'idletimeout', self.server.idletimeout)