cvs diff: Diffing .
? .project
Index: masquerade.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/masquerade/masquerade.module,v
retrieving revision 1.16.2.23
diff -u -p -r1.16.2.23 masquerade.module
--- masquerade.module	31 Aug 2009 17:51:28 -0000	1.16.2.23
+++ masquerade.module	31 Aug 2009 18:27:44 -0000
@@ -253,6 +253,8 @@ function _masquerade_test_user() {
  * Implementation of hook_user().
  */
 function masquerade_user($op, &$edit, &$edit_user, $category = NULL) {
+  static $old_session_id;
+
   switch ($op) {
 
     case 'logout':
@@ -313,6 +315,10 @@ function masquerade_user($op, &$edit, &$
       }
       break;
 
+    case 'submit':
+      $old_session_id = session_id();
+      break;
+
     case 'update':
     	$users = drupal_explode_tags($edit['masquerade_users']);
       db_query("DELETE FROM {masquerade_users} WHERE uid_from = %d", $edit_user->uid);
@@ -322,6 +328,12 @@ function masquerade_user($op, &$edit, &$
       }
       $edit['masquerade_users'] = NULL;
       break;
+
+    case 'after_update':
+      if (isset($old_session_id) && session_id() != $old_session_id) {
+        db_query("UPDATE {masquerade} SET sid = '%s' WHERE sid = '%s'", session_id(), $old_session_id);
+      }
+      break;
   }
 }
 
