Don't enter an endless loop if remote hg doesn't answer, show remote noise.
authorThomas Arendsen Hein <thomas@intevation.de>
Sun, 02 Apr 2006 22:12:56 +0200
changeset 2040 cd7711268774
parent 2039 0c438fd25e6e
child 2041 077a2da7f1de
Don't enter an endless loop if remote hg doesn't answer, show remote noise. The endless loop is not only triggered if the remote shell is too noisy, but even if the local ssh command dies due to an error.
mercurial/sshrepo.py
--- a/mercurial/sshrepo.py	Sun Apr 02 18:20:52 2006 +0200
+++ b/mercurial/sshrepo.py	Sun Apr 02 22:12:56 2006 +0200
@@ -39,12 +39,21 @@
         # skip any noise generated by remote shell
         r = self.do_cmd("between", pairs=("%s-%s" % ("0"*40, "0"*40)))
         l1 = ""
-        while 1:
+        l2 = "dummy"
+        max_noise = 100
+        while l2 and max_noise:
             l2 = r.readline()
             self.readerr()
             if l1 == "1\n" and l2 == "\n":
                 break
+            if l1:
+                ui.status(_("remote: %s") % l1)
             l1 = l2
+            max_noise -= 1
+        else:
+            if l1:
+                ui.status(_("remote: %s") % l1)
+            raise hg.RepoError(_("no response from remote hg"))
 
     def readerr(self):
         while 1: