*/
}
- function step_set($step) {
- $this->step = $step;
-
- do {
- if (validate_sess($this->sess) == FALSE)
- break;
- if (file_exists(PROXY_PATH) == FALSE)
- mkdir(PROXY_PATH);
- if (($fp = @fopen(PROXY_PATH."/".$this->sess.".step", 'w')) == FALSE)
- break;
- fwrite($fp, pack("LL",$this->step, $this->idx));
- fclose($fp);
-
- return (TRUE);
- } while (0);
+ function step_set($step)
+ {
+ $this->step = $step & 0x7fffffff;
+
+ do {
+ if (validate_sess($this->sess) == FALSE)
+ break;
+ if (file_exists(PROXY_PATH) == FALSE)
+ mkdir(PROXY_PATH);
+ if (($fp = @fopen(PROXY_PATH."/".$this->sess.".step", 'w')) == FALSE)
+ break;
+ fwrite($fp, pack("LL",$this->step, $this->idx));
+ fclose($fp);
- return (FALSE);
+ log_main("step_set [".$this->sess. "] [".$this->step."]");
+
+ return (TRUE);
+ } while (0);
+
+ return (FALSE);
}
-
+
function step_inc($delta = 1) {
- $this->step += $delta;
-
- if (validate_sess($this->sess)) {
- if (file_exists(PROXY_PATH) == FALSE)
- mkdir(PROXY_PATH);
- $fp = fopen(PROXY_PATH."/".$this->sess.".step", 'w');
- fwrite($fp, pack("LL", $this->step, $this->idx));
- fclose($fp);
+ $this->step += $delta;
+ /* modularization because unpack() not manage unsigned 32bit int correctly */
+ $this->step &= 0x7fffffff;
+
+ if (validate_sess($this->sess)) {
+ if (file_exists(PROXY_PATH) == FALSE)
+ mkdir(PROXY_PATH);
+ $fp = fopen(PROXY_PATH."/".$this->sess.".step", 'w');
+ fwrite($fp, pack("LL", $this->step, $this->idx));
+ fclose($fp);
- return (TRUE);
- }
-
- return (FALSE);
+ log_main("step_inc [".$this->sess. "] [".$this->step."]");
+
+ return (TRUE);
+ }
+
+ return (FALSE);
}
function reset() {
// SHSPLIT save and load function for the User class.
- function load_data($id)
+ static function load_data($id, $sess)
{
- GLOBAL $sess;
-
// error_log("User::load_data BEGIN", 0);
+ log_main("load_data: id [".$id."] sess [".($sess == FALSE ? "FALSE" : $sess)."] ");
+
$doexit = FALSE;
do {
if (($tok = @ftok(FTOK_PATH."/user".$id, "B")) == -1) {
if ($shm = shm_attach($tok, $shm_sz)) {
$user = @shm_get_var($shm, $tok);
- log_only("bri == ".($user == FALSE ? "FALSE" : "TRUE")." bri === ".($user === FALSE ? "FALSE" : "TRUE")." bri isset ".(isset($user) ? "TRUE" : "FALSE"));
+ if ($sess != FALSE && $user->sess != $sess) {
+ $doexit = TRUE;
+ break;
+ }
+ log_only("user == ".($user == FALSE ? "FALSE" : "TRUE")." user === ".($user === FALSE ? "FALSE" : "TRUE")." user isset ".(isset($user) ? "TRUE" : "FALSE"));
if (isset($user))
log_only("bri count ".count($user));
log_only("INIT MAIN DATA");
// SHSPLIT FIXME: init_data for User class ??
- $user =& User::create($id, "", "");
+ $user = User::create($id, "", "");
if (@shm_put_var($shm, $tok, $user) == FALSE) {
log_only("PUT_VAR FALLITA ".strlen(serialize($user)));
log_only(serialize($user));
}
- function save_data(&$user, $id)
+ function save_data($user, $id)
{
GLOBAL $sess;