From 133ba7d03ad64cb32cf044a761151accb5c5da80 Mon Sep 17 00:00:00 2001
From: Darren Oh <darren@oh.name>
Date: Thu, 21 Apr 2011 15:01:36 -0400
Subject: [PATCH] =?UTF-8?q?Issue=20#441842=20by=20Darren=20Oh:=20Fixed=20account=20disabling=20to=20remove=20all=20user=E2=80=99s=20sessions.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 memcache-session.inc |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/memcache-session.inc b/memcache-session.inc
index 02e4ce1..1a86c26 100644
--- a/memcache-session.inc
+++ b/memcache-session.inc
@@ -70,6 +70,7 @@ function sess_write($key, $value) {
 
   if ($user->uid || $value) {
     dmemcache_set($key, $session, ini_get('session.gc_maxlifetime'), 'session');
+    $user->sids[$key] = TRUE;
     dmemcache_set($user->uid, $user, ini_get('session.gc_maxlifetime'), 'users');
     if ($user->uid && $user->access < $_SERVER['REQUEST_TIME'] - 300) {
       db_query("UPDATE {users} SET access = %d WHERE uid = %d", $_SERVER['REQUEST_TIME'], $user->uid);
@@ -128,9 +129,16 @@ function sess_destroy_sid($sid) {
 }
 
 /**
- * End a specific user's session. Not implemented.
+ * End a specific user's session.
  */
 function sess_destroy_uid($uid) {
+  $user = dmemcache_get($uid, 'users');
+  if (is_object($user) && !empty($user->sids)) {
+    foreach ($user->sids as $sid => $status) {
+      dmemcache_delete($sid, 'session');
+    }
+  }
+  dmemcache_delete($uid, 'users');
 }
 
 function sess_gc($lifetime) {
-- 
1.7.4.1

