diff --git a/include/lassospkit_autopersistentsession.inc.php b/include/lassospkit_autopersistentsession.inc.php index aed01fa..720cd4a 100644 --- a/include/lassospkit_autopersistentsession.inc.php +++ b/include/lassospkit_autopersistentsession.inc.php @@ -64,7 +64,16 @@ class LassoSPKitAutoPersistentSession extends LassoSPKitDummySession { if ($newID) { $this->storage->rename($oldID, $newID); } else { + $blob = $this->storage->get($oldID); $this->storage->delete($oldID); + $userid = $blob['userid']; + if ($userid) { + $md5 = md5($userid); + if ($this->storage->linkcount($md5) == 1) { + $this->storage->delete($md5); + return; + } + } } parent::saveFederation(); } diff --git a/include/lassospkit_file.inc.php b/include/lassospkit_file.inc.php index 8baa842..6cd82b5 100644 --- a/include/lassospkit_file.inc.php +++ b/include/lassospkit_file.inc.php @@ -54,5 +54,12 @@ class LassoSPKitFileStore implements LassoSPKitStore { #lassospkit_debuglog("SPKit File Storage: " . $mesg); } } + function linkcount($key) { + $stat = stat($this->filepath($key)); + if (is_array($stat)) { + return $stat[3]; + } + return 0; + } } ?> diff --git a/include/lassospkit_mysql.inc.php b/include/lassospkit_mysql.inc.php index d5f1667..1fa7cd5 100644 --- a/include/lassospkit_mysql.inc.php +++ b/include/lassospkit_mysql.inc.php @@ -41,4 +41,7 @@ class LassoSPKitMySqlStore implements LassoSPKitStore { } function alias($key,$alias) { } + function linkcount($key) { + throw new Exception("Not implemented"); + } } diff --git a/include/lassospkit_storage.inc.php b/include/lassospkit_storage.inc.php index cda6721..3d7ebfa 100644 --- a/include/lassospkit_storage.inc.php +++ b/include/lassospkit_storage.inc.php @@ -5,6 +5,7 @@ interface LassoSPKitStore { public function delete($key); public function alias($key1,$key2); public function rename($key1, $key2); + public function linkcount($key); } ?>