--- OriModules/session_limit/session_limit.module	2008-12-04 19:30:13.000000000 +0300
+++ sites/all/modules/session_limit/session_limit.module	2009-09-04 16:44:44.000000000 +0300
@@ -34,7 +34,7 @@ function session_limit_settings() {
   );
   $form['session_limit_auto_drop'] = array(
     '#type' => 'checkbox',
-    '#title' => t('Automatically drop the oldest session without prompting.'),
+    '#title' => t('Automatically drop the oldest sessions without prompting.'),
     '#default_value' => variable_get('session_limit_auto_drop', 0)
   );
   if (module_exists('masquerade')) {
@@ -156,12 +156,14 @@ function session_limit_page() {
     drupal_goto();
   }
 
+
   if (variable_get('session_limit_auto_drop', 0)) {
-    // Get the oldest session.
-    $sid = db_result(db_query_range("SELECT sid FROM {sessions} WHERE uid = %d ORDER BY timestamp", $user->uid, 0, 1));
+    // Get the oldest sessions.
+    $count = db_result(db_query("SELECT count(sid) FROM {sessions} WHERE uid = %d", $user->uid));
+    $sidrange = db_query_range("SELECT sid FROM {sessions} WHERE uid = %d ORDER BY timestamp", $user->uid, 0, $count-variable_get('session_limit_max', $count));
 
-    if ($sid) {
-      _session_limit_disconnect($sid);
+    while ($sid = db_fetch_object($sidrange)->sid) {
+    	_session_limit_disconnect($sid);
     }
 
     drupal_goto();
