hgext/chgserver.py
changeset 28511 ff5f923fca3c
parent 28482 945e9516b435
child 28514 0747ef2c4ab2
--- a/hgext/chgserver.py	Sun Mar 13 01:32:42 2016 +0530
+++ b/hgext/chgserver.py	Sat Mar 12 22:03:30 2016 +0900
@@ -525,9 +525,10 @@
         os.setpgid(0, 0)
         ui = self.server.ui
         repo = self.server.repo
-        sv = chgcmdserver(ui, repo, self.rfile, self.wfile, self.connection,
-                          self.server.hashstate, self.server.baseaddress)
+        sv = None
         try:
+            sv = chgcmdserver(ui, repo, self.rfile, self.wfile, self.connection,
+                              self.server.hashstate, self.server.baseaddress)
             try:
                 sv.serve()
             # handle exceptions that may be raised by command server. most of
@@ -544,7 +545,11 @@
         except: # re-raises
             # also write traceback to error channel. otherwise client cannot
             # see it because it is written to server's stderr by default.
-            traceback.print_exc(file=sv.cerr)
+            if sv:
+                cerr = sv.cerr
+            else:
+                cerr = commandserver.channeledoutput(self.wfile, 'e')
+            traceback.print_exc(file=cerr)
             raise
 
 def _tempaddress(address):