Index: /Users/simon/dev/svn_out/trac-0.10-stable/trac/config.py
===================================================================
--- /Users/simon/dev/svn_out/trac-0.10-stable/trac/config.py	(revision 5342)
+++ /Users/simon/dev/svn_out/trac-0.10-stable/trac/config.py	(working copy)
@@ -173,11 +173,14 @@
         finally:
             fileobj.close()
 
-    def parse_if_needed(self):
+    def parse_if_needed(self, check_only=False):
         # Load global configuration
+        # Alternatively, if check_only it returns True if it needs updating
         if os.path.isfile(self.site_filename):
             modtime = os.path.getmtime(self.site_filename)
             if modtime > self._lastsitemtime:
+                if check_only:
+                    return True
                 self.site_parser.read(self.site_filename)
                 self._lastsitemtime = modtime
 
@@ -185,6 +188,8 @@
             return
         modtime = os.path.getmtime(self.filename)
         if modtime > self._lastmtime:
+            if check_only:
+                return True
             self.parser.read(self.filename)
             self._lastmtime = modtime
 
Index: /Users/simon/dev/svn_out/trac-0.10-stable/trac/web/main.py
===================================================================
--- /Users/simon/dev/svn_out/trac-0.10-stable/trac/web/main.py	(revision 5342)
+++ /Users/simon/dev/svn_out/trac-0.10-stable/trac/web/main.py	(working copy)
@@ -54,16 +54,13 @@
     env = None
     env_cache_lock.acquire()
     try:
-        if not env_path in env_cache:
+        if (not env_path in env_cache) or (
+                env_cache[env_path].config.parse_if_needed(check_only=True)):
             env_cache[env_path] = open_environment(env_path)
         env = env_cache[env_path]
     finally:
         env_cache_lock.release()
 
-    # Re-parse the configuration file if it changed since the last the time it
-    # was parsed
-    env.config.parse_if_needed()
-
     return env
 
 def populate_hdf(hdf, env, req=None):

