mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-10 15:20:56 +00:00
Remove nil filenames from database and indexes (fixes #1243)
This commit is contained in:
parent
ce86131d12
commit
e4837f14b1
@ -586,6 +586,16 @@ func ldbWithAllFolderTruncated(db *leveldb.DB, folder []byte, fn func(device []b
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if f.Name == "" {
|
||||||
|
l.Infoln("Dropping invalid nil filename from database")
|
||||||
|
batch := new(leveldb.Batch)
|
||||||
|
ldbRemoveFromGlobal(db, batch, folder, device, nil)
|
||||||
|
batch.Delete(dbi.Key())
|
||||||
|
db.Write(batch, nil)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if cont := fn(device, f); !cont {
|
if cont := fn(device, f); !cont {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -477,14 +477,37 @@ func (c *rawConnection) handleIndex(im IndexMessage) {
|
|||||||
if debug {
|
if debug {
|
||||||
l.Debugf("Index(%v, %v, %d files)", c.id, im.Folder, len(im.Files))
|
l.Debugf("Index(%v, %v, %d files)", c.id, im.Folder, len(im.Files))
|
||||||
}
|
}
|
||||||
c.receiver.Index(c.id, im.Folder, im.Files)
|
c.receiver.Index(c.id, im.Folder, filterIndexMessageFiles(im.Files))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *rawConnection) handleIndexUpdate(im IndexMessage) {
|
func (c *rawConnection) handleIndexUpdate(im IndexMessage) {
|
||||||
if debug {
|
if debug {
|
||||||
l.Debugf("queueing IndexUpdate(%v, %v, %d files)", c.id, im.Folder, len(im.Files))
|
l.Debugf("queueing IndexUpdate(%v, %v, %d files)", c.id, im.Folder, len(im.Files))
|
||||||
}
|
}
|
||||||
c.receiver.IndexUpdate(c.id, im.Folder, im.Files)
|
c.receiver.IndexUpdate(c.id, im.Folder, filterIndexMessageFiles(im.Files))
|
||||||
|
}
|
||||||
|
|
||||||
|
func filterIndexMessageFiles(fs []FileInfo) []FileInfo {
|
||||||
|
var out []FileInfo
|
||||||
|
for i, f := range fs {
|
||||||
|
if f.Name == "" {
|
||||||
|
l.Infoln("Dropping nil filename from incoming index")
|
||||||
|
if out == nil {
|
||||||
|
// Most incoming updates won't contain anything invalid, so we
|
||||||
|
// delay the allocation and copy to output slice until we
|
||||||
|
// really need to do it, then copy all the so var valid files
|
||||||
|
// to it.
|
||||||
|
out = make([]FileInfo, i, len(fs)-1)
|
||||||
|
copy(out, fs)
|
||||||
|
}
|
||||||
|
} else if out != nil {
|
||||||
|
out = append(out, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if out != nil {
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
return fs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *rawConnection) handleRequest(msgID int, req RequestMessage) {
|
func (c *rawConnection) handleRequest(msgID int, req RequestMessage) {
|
||||||
|
Loading…
Reference in New Issue
Block a user