[PATCH] http push: break infinite recursion on failure with Python 2.6.5 (issue2179)

Mads Kiilerich mads at kiilerich.com
Wed Jun 16 15:56:03 CDT 2010


# HG changeset patch
# User Mads Kiilerich <mads at kiilerich.com>
# Date 1276721698 -7200
# Node ID 3d23e7ababac71323b7704a84a62a8af56f95f1c
# Parent  fcc7cf0d814a769486a46d82bb5f3ee15008051f
http push: break infinite recursion on failure with Python 2.6.5 (issue2179)

Python 2.6.5 will keep resetting the retry count on redirects, for example when
the server returns 401 on failing auth (like google code currently does). We
stop the endless recursion by not resetting the count.

http://bugs.python.org/issue3819 introduced the regression with Python 2.6.5.

http://bugs.python.org/issue8797 discusses a fix which might make it to 2.6.6
and 2.7.0.

diff --git a/mercurial/url.py b/mercurial/url.py
--- a/mercurial/url.py
+++ b/mercurial/url.py
@@ -556,6 +556,13 @@
                 return
             raise
 
+    # Python 2.6.5 will keep resetting the retry count on redirects, for
+    # example when the server returns 401 on failing auth (like google code
+    # currently does). We stop the endless recursion by not resetting the
+    # count.
+    def reset_retry_count(self):
+        pass
+
 def getauthinfo(path):
     scheme, netloc, urlpath, query, frag = urlparse.urlsplit(path)
     if not urlpath:


More information about the Mercurial-devel mailing list