]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Back out bug 1251208: it makes checksetup.pl to never end and localconfig is erased
authorFrédéric Buclin <LpSolit@gmail.com>
Fri, 11 Mar 2016 17:58:51 +0000 (18:58 +0100)
committerFrédéric Buclin <LpSolit@gmail.com>
Fri, 11 Mar 2016 17:58:51 +0000 (18:58 +0100)
Bugzilla.pm

index bff8dc788321dc33daaa92cf1ecb5722774ed97e..8bea97b394a4957b2ad0d6adbc9d064dfbd3c019 100644 (file)
@@ -682,21 +682,43 @@ sub local_timezone {
              ||= DateTime::TimeZone->new(name => 'local');
 }
 
-my $request_cache = {};
-
-sub request_cache { return $request_cache }
+# This creates the request cache for non-mod_perl installations.
+# This is identical to Install::Util::_cache so that things loaded
+# into Install::Util::_cache during installation can be read out
+# of request_cache later in installation.
+our $_request_cache = $Bugzilla::Install::Util::_cache;
+
+sub request_cache {
+    if ($ENV{MOD_PERL}) {
+        require Apache2::RequestUtil;
+        # Sometimes (for example, during mod_perl.pl), the request
+        # object isn't available, and we should use $_request_cache instead.
+        my $request = eval { Apache2::RequestUtil->request };
+        return $_request_cache if !$request;
+        return $request->pnotes();
+    }
+    return $_request_cache;
+}
 
 sub clear_request_cache {
-    %$request_cache = ();
+    $_request_cache = {};
+    if ($ENV{MOD_PERL}) {
+        require Apache2::RequestUtil;
+        my $request = eval { Apache2::RequestUtil->request };
+        if ($request) {
+            my $pnotes = $request->pnotes;
+            delete @$pnotes{(keys %$pnotes)};
+        }
+    }
 }
 
 # This is a per-process cache.  Under mod_cgi it's identical to the
 # request_cache.  When using mod_perl, items in this cache live until the
 # worker process is terminated.
-my $process_cache = {};
+our $_process_cache = {};
 
 sub process_cache {
-    return $process_cache;
+    return $_process_cache;
 }
 
 # This is a memcached wrapper, which provides cross-process and cross-system