--- http://drupalcode.org/viewvc/drupal/drupal/includes/common.inc 2010/03/11 21:23:05 1.1127 +++ http://drupalcode.org/viewvc/drupal/drupal/includes/common.inc 2010/03/12 14:20:32 1.1128 @@ -4385,6 +4385,14 @@ // Allow execution to continue even if the request gets canceled. @ignore_user_abort(TRUE); + // Prevent session information from being saved while cron is running. + drupal_save_session(FALSE); + + // Force the current user to anonymous to ensure consistent permissions on + // cron runs. + $original_user = $GLOBALS['user']; + $GLOBALS['user'] = drupal_anonymous_user(); + // Try to allocate enough time to run all the hook_cron implementations. drupal_set_time_limit(240); @@ -4445,6 +4453,10 @@ $queue->deleteItem($item); } } + // Restore the user. + $GLOBALS['user'] = $original_user; + drupal_save_session(TRUE); + return $return; }