is_exclusive argument added to all lock_data() functions, (exclusivity is always...
[brisk.git] / web / Obj / auth.phh
index 8e74ffd..36b75ca 100644 (file)
@@ -179,7 +179,7 @@ class Challenges {
                     $shm_sz = CHAL_SHM_DIMS_MIN;
 
                 if ($shm = shm_attach($tok, $shm_sz)) {
-                    $chals = @shm_get_var($shm, $tok);
+                    $chals = @shm_get_var($shm, $tok); // CHECKED BELOW
        
                     log_only("challenges ==  ".($chals == FALSE ?   "FALSE" : "TRUE")."  challenges ===  ".($chals === FALSE ? "FALSE" : "TRUE")."  challenges isset ".(isset($chals) ?   "TRUE" : "FALSE"));
        
@@ -191,6 +191,7 @@ class Challenges {
                             log_only("PUT_VAR FALLITA ".strlen(serialize($chals)));
                             log_only(serialize($chals));
                         }
+                        log_shme("Challenges::save_data2");
                     }
                     $chals->shm_sz = $shm_sz;
        
@@ -222,7 +223,8 @@ class Challenges {
                 log_only("challenges count ".count($chals->item)."  _n: ".$chals->item_n);
 
             $chals->mod = FALSE;
-            if (shm_put_var($shm, $tok, $chals) != FALSE) {
+            if (@shm_put_var($shm, $tok, $chals) != FALSE) {
+                log_shme("Challenges::save_data");
                 shm_detach($shm);
                 return (TRUE);
             }
@@ -242,13 +244,13 @@ class Challenges {
         return (FALSE);
     }
 
-    function lock_data()
+    static function lock_data($is_exclusive)
     {
         if (($tok = @ftok(FTOK_PATH."/challenges", "B")) == -1) {
             return (FALSE);
         }
         // echo "FTOK ".$tok."<br>";
-        if (($res = sem_get($tok)) == FALSE) {
+        if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) {
             return (FALSE);
         }
         if (sem_acquire($res)) {   
@@ -260,7 +262,7 @@ class Challenges {
             return (FALSE);
     }
   
-    function unlock_data($res)
+    static function unlock_data($res)
     {
         GLOBAL $sess;