Browse Source

Make sure we start scanning at an indexed location (fixes #1399)

Audrius Butkevicius 10 years ago
parent
commit
57fc0eb5b1
1 changed files with 13 additions and 0 deletions
  1. 13 0
      internal/model/model.go

+ 13 - 0
internal/model/model.go

@@ -1146,6 +1146,7 @@ func (m *Model) ScanFolder(folder string) error {
 }
 
 func (m *Model) ScanFolderSub(folder, sub string) error {
+	sub = osutil.NativeFilename(sub)
 	if p := filepath.Clean(filepath.Join(folder, sub)); !strings.HasPrefix(p, folder) {
 		return errors.New("invalid subpath")
 	}
@@ -1162,6 +1163,18 @@ func (m *Model) ScanFolderSub(folder, sub string) error {
 
 	_ = ignores.Load(filepath.Join(folderCfg.Path, ".stignore")) // Ignore error, there might not be an .stignore
 
+	// Required to make sure that we start indexing at a directory we're already
+	// aware off.
+	for sub != "" {
+		if _, ok = fs.Get(protocol.LocalDeviceID, sub); ok {
+			break
+		}
+		sub = filepath.Dir(sub)
+		if sub == "." || sub == string(filepath.Separator) {
+			sub = ""
+		}
+	}
+
 	w := &scanner.Walker{
 		Dir:          folderCfg.Path,
 		Sub:          sub,