From acaf134dfe68ba25736ab83168d05caec2fe10cc Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sat, 16 Jan 2016 21:42:32 +0100 Subject: [PATCH] Don't crash on folder remove while pulling (fixes #2705) --- lib/model/model.go | 4 ++++ lib/model/rwfolder.go | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/lib/model/model.go b/lib/model/model.go index d08e28fe5..90bbd68dd 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -1168,6 +1168,10 @@ func (m *Model) updateLocals(folder string, fs []protocol.FileInfo) { m.fmut.RLock() files := m.folderFiles[folder] m.fmut.RUnlock() + if files == nil { + // The folder doesn't exist. + return + } files.Update(protocol.LocalDeviceID, fs) filenames := make([]string, len(fs)) diff --git a/lib/model/rwfolder.go b/lib/model/rwfolder.go index 13ff49463..1252275ec 100644 --- a/lib/model/rwfolder.go +++ b/lib/model/rwfolder.go @@ -527,6 +527,13 @@ func (p *rwFolder) pullerIteration(ignores *ignore.Matcher) int { nextFile: for { + select { + case <-p.stop: + // Stop processing files if the puller has been told to stop. + break + default: + } + fileName, ok := p.queue.Pop() if !ok { break