mercurial/commandserver.py
changeset 28511 ff5f923fca3c
parent 28157 e7c9b59dbbcf
child 29366 d269e7db2f55
--- a/mercurial/commandserver.py	Sun Mar 13 01:32:42 2016 +0530
+++ b/mercurial/commandserver.py	Sat Mar 12 22:03:30 2016 +0900
@@ -338,8 +338,9 @@
     def handle(self):
         ui = self.server.ui
         repo = self.server.repo
-        sv = server(ui, repo, self.rfile, self.wfile)
+        sv = None
         try:
+            sv = server(ui, repo, self.rfile, self.wfile)
             try:
                 sv.serve()
             # handle exceptions that may be raised by command server. most of
@@ -354,7 +355,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 = channeledoutput(self.wfile, 'e')
+            traceback.print_exc(file=cerr)
             raise
 
 class unixservice(object):