From f81b57bc451d50555a2ed198127e6031f66c7031 Mon Sep 17 00:00:00 2001
From: Lukas Reschke <lukas@owncloud.com>
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 d6270dcf2c7..063d389e98b 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 3319013ddfa..a1ce068d819 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);
 
-- 
GitLab