diff --git a/flag.module b/flag.module index 5b50d3b..55fbbef 100644 --- a/flag.module +++ b/flag.module @@ -2058,7 +2058,9 @@ function flag_set_sid($uid = NULL, $create = TRUE) { $uid = $GLOBALS['user']->uid; } - if (!isset($sids[$uid])) { + // Create an SID of none has been set, yet. Also create one if previously + // none was required (-1) but now it is required ($create == TRUE). + if (!isset($sids[$uid]) || ($sids[$uid] == -1 && $create)) { if (module_exists('session_api') && session_api_available() && $uid == 0) { $sids[$uid] = session_api_get_sid($create); } @@ -2067,7 +2069,9 @@ function flag_set_sid($uid = NULL, $create = TRUE) { } } - return $sids[$uid]; + // Keep the -1 case internal and let the outside world only distinguish two + // cases: (1) there is an SID; (2) there is no SID (-> 0). + return $sids[$uid] != -1 ? $sids[$uid] : 0; } /**