From aedff9c97a72d2e47f8013e14a068400232b258e Mon Sep 17 00:00:00 2001
From: Chris Smith <toonarmy@phpbb.com>
Date: Tue, 8 Dec 2009 22:55:33 +0000
Subject: Fix potential data corruption issues with memcache ACM

git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10307 89ea8834-ac86-4346-8a33-228a782c2dd0
---
 phpBB/docs/CHANGELOG.html           | 1 +
 phpBB/includes/acm/acm_memcache.php | 6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

(limited to 'phpBB')

diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index 18e0f5455d..ddff2266f9 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -106,6 +106,7 @@
 		<li>[Fix] Correctly replace table prefix before inserting schema data into the database. (Bug #54815)</li>
 		<li>[Fix] Correctly take post time instead of topic time for the overall forum feed statistics row. (Bug #55005)</li>
 		<li>[Fix] Posting errors with CAPTCHAs using user::add_lang(). (Bug #55245)</li>
+		<li>[Fix] Use memcache::replace() instead of memcache::set() for existing keys to prevent problems.</li>
 		<li>[Change] Send time of last item instead of current time in ATOM Feeds. (Bug #53305)</li>
 		<li>[Change] Use em dash instead of hyphen/minus as separator in ATOM Feeds item statistics. (Bug #53565)</li>
 	</ul>
diff --git a/phpBB/includes/acm/acm_memcache.php b/phpBB/includes/acm/acm_memcache.php
index 3077ee9615..52b8832749 100644
--- a/phpBB/includes/acm/acm_memcache.php
+++ b/phpBB/includes/acm/acm_memcache.php
@@ -105,7 +105,11 @@ class acm extends acm_memory
 	*/
 	function _write($var, $data, $ttl = 2592000)
 	{
-		return $this->memcache->set($this->key_prefix . $var, $data, $this->flags, $ttl);
+		if (!$this->memcache->replace($this->key_prefix . $var, $data, $this->flags, $ttl))
+		{
+			return $this->memcache->set($this->key_prefix . $var, $data, $this->flags, $ttl);
+		}
+		return true;
 	}
 
 	/**
-- 
cgit v1.2.1