summaryrefslogtreecommitdiff
path: root/inc/subscription.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/subscription.php')
-rw-r--r--inc/subscription.php21
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;
}