diff options
Diffstat (limited to 'inc/subscription.php')
-rw-r--r-- | inc/subscription.php | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/inc/subscription.php b/inc/subscription.php index 08d4cb241..8e3a99a8f 100644 --- a/inc/subscription.php +++ b/inc/subscription.php @@ -46,22 +46,23 @@ function subscription_filename($id) { */ function subscription_lock_filename ($id){ global $conf; - return $conf['lockdir'].'/_subscr_' . $id . '.lock'; + return $conf['lockdir'].'/_subscr_' . md5($id) . '.lock'; } function subscription_lock($id) { - // FIXME merge this with the indexer lock generation, abstract out global $conf; $lock = subscription_lock_filename($id); - while(!@mkdir($lock,$conf['dmode'])){ - usleep(50); - if(time()-@filemtime($lock) > 60*5){ - // looks like a stale lock - remove it - @rmdir($lock); - }else{ - return false; - } + + if (is_dir($lock) && time()-@filemtime($lock) > 60*5) { + // looks like a stale lock - remove it + @rmdir($lock); } + + // try creating the lock directory + if (!@mkdir($lock,$conf['dmode'])) { + return false; + } + if($conf['dperm']) chmod($lock, $conf['dperm']); return true; } |