From f81b57bc451d50555a2ed198127e6031f66c7031 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Tue, 19 Apr 2016 12:07:54 +0200 Subject: [PATCH] Read only once This can lead to race conditions otherwise. Also depracted hasKey --- lib/private/Route/CachingRouter.php | 5 +++-- lib/public/icache.php | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/private/Route/CachingRouter.php b/lib/private/Route/CachingRouter.php index d6270dcf2c..063d389e98 100644 --- a/lib/private/Route/CachingRouter.php +++ b/lib/private/Route/CachingRouter.php @@ -50,8 +50,9 @@ class CachingRouter extends Router { public function generate($name, $parameters = array(), $absolute = false) { asort($parameters); $key = $this->context->getHost() . '#' . $this->context->getBaseUrl() . $name . sha1(json_encode($parameters)) . intval($absolute); - if ($this->cache->hasKey($key)) { - return $this->cache->get($key); + $cachedKey = $this->cache->get($key); + if ($cachedKey) { + return $cachedKey; } else { $url = parent::generate($name, $parameters, $absolute); $this->cache->set($key, $url, 3600); diff --git a/lib/public/icache.php b/lib/public/icache.php index 3319013ddf..a1ce068d81 100644 --- a/lib/public/icache.php +++ b/lib/public/icache.php @@ -60,6 +60,7 @@ interface ICache { * @param string $key * @return bool * @since 6.0.0 + * @deprecated 9.1.0 Directly read from GET to prevent race conditions */ public function hasKey($key);