Fix unwanted source cleanup and buggy orphan domain detection

This commit is contained in:
nemunaire 2021-01-17 08:56:44 +01:00
parent 4cdd7d341e
commit db15768ddd
2 changed files with 17 additions and 3 deletions

View File

@ -185,14 +185,22 @@ func (s *LevelDBStorage) TidyDomains() error {
domain, err := s.getDomain(string(iter.Key()))
if err == nil {
_, err = s.GetUser(domain.IdUser)
var u *happydns.User
u, err = s.GetUser(domain.IdUser)
if err == leveldb.ErrNotFound {
// Drop domain of unexistant users
err = tx.Delete(iter.Key(), nil)
log.Printf("Deleting orphan domain (user %d not found): %v\n", domain.IdUser, domain)
}
_, err = s.GetSource(u, domain.IdSource)
if err == leveldb.ErrNotFound {
// Drop domain of unexistant source
err = tx.Delete(iter.Key(), nil)
log.Printf("Deleting orphan domain (source %d not found): %v\n", domain.IdSource, domain)
}
} else {
// Drop domain of unexistant users
// Drop unreadable domains
log.Printf("Deleting unreadable domain (%w): %v\n", err, domain)
err = tx.Delete(iter.Key(), nil)
}

View File

@ -44,8 +44,14 @@ import (
)
func (s *LevelDBStorage) getSourceMeta(id []byte) (srcMeta *happydns.SourceMeta, err error) {
var v []byte
v, err = s.db.Get(id, nil)
if err != nil {
return
}
srcMeta = &happydns.SourceMeta{}
err = decodeData(id, srcMeta)
err = decodeData(v, srcMeta)
return
}