From 7cc4bd5ad9bbf3c709a6d909324a221e0ce01f60 Mon Sep 17 00:00:00 2001 From: Tim Starling Date: Fri, 5 Jan 2007 16:54:52 +0000 Subject: [PATCH] In SqlBagOStuff: Respect expiry time on get(). Fix incorrect value in _maxdatetime(), wfTimestamp() only works with a value in the range of unix timestamps. Increase pivot for distinguishing expiry time intervals from absolute dates from one month to 10 years. --- includes/BagOStuff.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/includes/BagOStuff.php b/includes/BagOStuff.php index 6edef87a77..c720807d38 100644 --- a/includes/BagOStuff.php +++ b/includes/BagOStuff.php @@ -240,6 +240,13 @@ abstract class SqlBagOStuff extends BagOStuff { } if($row=$this->_fetchobject($res)) { $this->_debug("get: retrieved data; exp time is " . $row->exptime); + if ( $row->exptime != $this->_maxdatetime() && + wfTimestamp( TS_UNIX, $row->exptime ) < time() ) + { + $this->_debug("get: key has expired, deleting"); + $this->delete($key); + return false; + } return $this->_unserialize($this->_blobdecode($row->value)); } else { $this->_debug('get: no matching rows'); @@ -253,7 +260,7 @@ abstract class SqlBagOStuff extends BagOStuff { if($exptime == 0) { $exp = $this->_maxdatetime(); } else { - if($exptime < 3600*24*30) + if($exptime < 3.16e8) # ~10 years $exptime += time(); $exp = $this->_fromunixtime($exptime); } @@ -407,7 +414,11 @@ class MediaWikiBagOStuff extends SqlBagOStuff { } function _maxdatetime() { $dbw =& wfGetDB(DB_MASTER); - return $dbw->timestamp('9999-12-31 12:59:59'); + if ( time() > 0x7fffffff ) { + return $this->_fromunixtime( 1<<62 ); + } else { + return $this->_fromunixtime( 0x7fffffff ); + } } function _fromunixtime($ts) { $dbw =& wfGetDB(DB_MASTER); -- 2.20.1