Delay_Management class added to avoid wrong timeout after temporarly server hungs
[brisk.git] / web / briskin5 / Obj / briskin5.phh
index daf02b3..354637a 100644 (file)
@@ -801,6 +801,8 @@ class Bin5 {
     var $the_end;
     var $tok;
 
+    var $delay_mgr;
+
     static function page_manager($room, $header_out, $path, $method, $addr, $get, $post, $cookie) 
     {
         switch ($path) {
@@ -852,6 +854,8 @@ class Bin5 {
         $this->table_token = $table_token;
         $this->garbage_timeout = 0;
         
+        $this->delay_mgr = new Delay_Manager((GARBAGE_TIMEOUT *3.0) / 2.0);
+
         log_wr("Bin5 constructor end");
     }
     
@@ -888,6 +892,9 @@ class Bin5 {
         /* Garbage collector degli utenti in timeout */
         $ismod = FALSE;
         $curtime = time();
+
+        $delta = $this->delay_mgr->delta_get($curtime);
+
         if ($force || $this->garbage_timeout < $curtime) {
             for ($i = 0 ; $i < BIN5_MAX_PLAYERS ; $i++) {
                 $user_cur = $this->user[$i];
@@ -895,7 +902,7 @@ class Bin5 {
                     ($user_cur->stat == 'table' && ($user_cur->subst == 'shutdowned' || $user_cur->subst == 'shutdowner')))
                     continue;
                 
-                if ($user_cur->lacc + EXPIRE_TIME_RD < $curtime) { // Auto logout dell'utente
+                if ($user_cur->lacc + EXPIRE_TIME_RD < ($curtime - $delta)) { // Auto logout dell'utente
                     log_rd2($user_cur->sess." bin5 AUTO LOGOUT.");
                     
                     if ($user_cur->stat == 'table') {
@@ -931,6 +938,7 @@ class Bin5 {
             $ismod = TRUE;
         }
         
+        $this->delay_mgr->lastcheck_set($curtime);
         return ($ismod);
     }
     
@@ -1109,7 +1117,7 @@ class Bin5 {
                                                                      $dt, $user->flags, xcape($user->name), xcape($user_mesg));
                 $user_cur->step_inc();
             }
-            log_legal($curtime, 'xxx', $user, ($user->stat == 'room' ? 'room' : 'table '.$user->table_orig),$user_mesg);
+            log_legal($curtime, $user->ip, $user, ($user->stat == 'room' ? 'room' : 'table '.$user->table_orig),$user_mesg);
         }
     }
 
@@ -1231,7 +1239,7 @@ class Bin5 {
                     || ($bri = $s_a_p->app->match_get($table_idx, $table_token)) == NULL
                     || (($user = $bri->get_user($cookie['sess'], $idx)) == FALSE)) {
 
-                    $content = Bin5_user::stream_fini($s_a_p->rndstr, TRUE);
+                    $content = Bin5_user::stream_fini($transp_type, $s_a_p->rndstr, TRUE);
                     $s_a_p->pgflush_try_add($enc, $new_socket, 20, $header_out, $content);
 
                     return TRUE;
@@ -1428,7 +1436,7 @@ function show_table(&$bri, &$user, $sendstep, $is_transition, $is_again)
         $ret .= "setTimeout(preload_images, 500, g_preload_img_arr, g_imgct);";
     }
     if (!$is_again) 
-        $ret .= table_wellcome($user);
+        $ret .= table_welcome($user);
 
     if ($is_transition && !$is_again) { // appena seduti al tavolo, play della mucca
         $ret .= playsound("cow.mp3");
@@ -1690,7 +1698,7 @@ function show_table_info(&$bri, &$table, $table_pos)
         }
         $old_multer = $table->multer(FALSE);
         if ($old_multer > 1) {
-            $noty .= sprintf($mlang_bin5_bin5['info_omul'][$G_lang], $old_multer);
+            $noty .= sprintf($mlang_bin5_bin5['info_omul'][$G_lang], multoval($old_multer));
         }
         $noty .= "<hr><br>";
     }
@@ -1723,7 +1731,7 @@ function show_table_info(&$bri, &$table, $table_pos)
   
     $multer = $table->multer(TRUE);
     if ($multer > 1) {
-        $noty .= sprintf($mlang_bin5_bin5['info_mult'][$G_lang], $multer );
+        $noty .= sprintf($mlang_bin5_bin5['info_mult'][$G_lang], multoval($multer) );
     }
     $noty .= "<hr><br>";
     $ret .= show_notify($noty, 3000, $mlang_bin5_bin5['btn_bkgame'][$G_lang], 500, 400);
@@ -1737,7 +1745,7 @@ function show_table_info(&$bri, &$table, $table_pos)
     return ($ret);
 }
 
-function table_wellcome($user)
+function table_welcome($user)
 {
     GLOBAL $table_wellarr, $G_lang;
     $ret = "";