[PATCH 06 of 10] chgserver: pass hashstate and base server address to chgcmdserver

Jun Wu quark at fb.com
Wed Mar 2 05:44:08 EST 2016


# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1456753614 0
#      Mon Feb 29 13:46:54 2016 +0000
# Node ID 9821d8ed7874129231a85e86131d37d02f01f129
# Parent  228cda48daee93dc23dc512b9390c9eadfd93f19
chgserver: pass hashstate and base server address to chgcmdserver

In order to detect hash change from a request handler, it 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
@@ -332,11 +332,13 @@
 ]
 
 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
@@ -491,7 +493,8 @@
         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()
@@ -586,6 +589,8 @@
                   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)


More information about the Mercurial-devel mailing list