Fix stale hashjob bug.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Fri, 11 Nov 2005 01:04:12 +0000 (01:04 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Fri, 11 Nov 2005 01:04:12 +0000 (01:04 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@510 959494ce-11ee-0310-bf91-de5d638817bd

daemon/client.c

index 814ee0f..4a647e8 100644 (file)
@@ -76,7 +76,11 @@ static struct scanstate *scanjob = NULL;
 static struct scanqueue *scanqueue = NULL;
 static struct sharepoint *shares = NULL;
 static struct hashcache *hashcache = NULL;
-static pid_t hashjob = 0;
+/* Set initially to -1, but changed to 0 the first time run() is
+ * called. This is to avoid forking a hash job before daemonizing,
+ * since that would make the daemon unable to wait() for the hash
+ * job. */
+static pid_t hashjob = -1;
 struct sharecache *shareroot = NULL;
 unsigned long long sharesize = 0;
 GCBCHAIN(sharechangecb, unsigned long long);
@@ -1051,6 +1055,11 @@ static int init(int hup)
 
 static int run(void)
 {
+    if(hashjob == -1)
+    {
+       hashjob = 0;
+       checkhashes();
+    }
     return(doscan(10));
 }