changeset 22087:af62f0280a76 stable

hgweb: avoid config object race with hgwebdir (issue4326) Turns out hgwebdir passes full repo objects to each hgweb request instance, but with a shared baseui. We explicitly break the sharing.
author Matt Mackall <mpm@selenic.com>
date Sun, 10 Aug 2014 13:53:36 -0500
parents 68f2f8bfe9ae
children a82c5975095d 1e392c63fb76
files mercurial/hgweb/hgweb_mod.py mercurial/hgweb/hgwebdir_mod.py
diffstat 2 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hgweb/hgweb_mod.py	Sat Aug 09 16:15:52 2014 -0500
+++ b/mercurial/hgweb/hgweb_mod.py	Sun Aug 10 13:53:36 2014 -0500
@@ -61,6 +61,7 @@
                 u = ui.ui()
             r = hg.repository(u, repo)
         else:
+            # we trust caller to give us a private copy
             r = repo
 
         r = self._getview(r)
--- a/mercurial/hgweb/hgwebdir_mod.py	Sat Aug 09 16:15:52 2014 -0500
+++ b/mercurial/hgweb/hgwebdir_mod.py	Sun Aug 10 13:53:36 2014 -0500
@@ -214,7 +214,8 @@
                     if real:
                         req.env['REPO_NAME'] = virtualrepo
                         try:
-                            repo = hg.repository(self.ui, real)
+                            # ensure caller gets private copy of ui
+                            repo = hg.repository(self.ui.copy(), real)
                             return hgweb(repo).run_wsgi(req)
                         except IOError, inst:
                             msg = inst.strerror