From f9c93e338ef60d3505f8f2e141137aaccfabf961 Mon Sep 17 00:00:00 2001
From: Daira Hopwood <daira@jacaranda.org>
Date: Fri, 17 Apr 2015 18:26:14 +0100
Subject: [PATCH] Scan dir when service starts

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
---
 src/allmydata/frontends/drop_upload.py | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/src/allmydata/frontends/drop_upload.py b/src/allmydata/frontends/drop_upload.py
index ea8d065f..521b8148 100644
--- a/src/allmydata/frontends/drop_upload.py
+++ b/src/allmydata/frontends/drop_upload.py
@@ -75,12 +75,10 @@ class DropUploader(service.MultiService):
         self._notifier.watch(self._local_path, mask=mask, callbacks=[self._notify])
 
     def _check_db_file(self, childpath):
-        """_check_db_file returns True if the file must be uploaded.
-        """
+        # returns True if the file must be uploaded.
         assert self._db != None
         use_timestamps = True
         r = self._db.check_file(childpath, use_timestamps)
-        # XXX call r.should_check() ?
         return !r.was_uploaded()
 
     def _scan(self, localpath):
@@ -91,22 +89,20 @@ class DropUploader(service.MultiService):
         except EnvironmentError:
             raise(Exception("WARNING: magic folder: permission denied on directory %s" % (quoted_path,)))
         except FilenameEncodingError:
-            raise(Esception("WARNING: magic folder: could not list directory %s due to a filename encoding error" % (quoted_path,)))
+            raise(Exception("WARNING: magic folder: could not list directory %s due to a filename encoding error" % (quoted_path,)))
 
         for child in children:
             assert isinstance(child, unicode), child
             childpath = os.path.join(localpath, child)
             # note: symlinks to directories are both islink() and isdir()
             if os.path.isdir(childpath) and not os.path.islink(childpath):
-                metadata = tahoe_backup.get_local_metadata(childpath)
                 # recurse on the child directory
-                self.process(childpath)
+                self._scan(childpath)
             elif os.path.isfile(childpath) and not os.path.islink(childpath):
                 try:
-                    must_upload = self.check_db_file(childpath)
+                    must_upload = self._check_db_file(childpath)
                     if must_upload:
-                        pass # FIXME
-
+                        self._add_to_dequeue(childpath)
 
     def startService(self):
         self._db = backupdb.get_backupdb(self._dbfile, stderr)
@@ -114,6 +110,8 @@ class DropUploader(service.MultiService):
             # XXX or raise an exception?
             return Failure(Exception('ERROR: Unable to load magic folder db.'))
 
+        self._scan(self._local_path)
+
         service.MultiService.startService(self)
         d = self._notifier.startReading()
         self._stats_provider.count('drop_upload.dirs_monitored', 1)
-- 
2.45.2