diff --git a/smtpd/filestore.go b/smtpd/filestore.go index d59699a..361acc2 100644 --- a/smtpd/filestore.go +++ b/smtpd/filestore.go @@ -254,22 +254,22 @@ func (mb *FileMailbox) writeIndex() error { if err != nil { return err } - defer func() { - if err := file.Close(); err != nil { - log.Errorf("Failed to close %q: %v", mb.indexPath, err) - } - }() writer := bufio.NewWriter(file) - // Write each message and then flush enc := gob.NewEncoder(writer) for _, m := range mb.messages { err = enc.Encode(m) if err != nil { + _ = file.Close() return err } } if err := writer.Flush(); err != nil { + _ = file.Close() + return err + } + if err := file.Close(); err != nil { + log.Errorf("Failed to close %q: %v", mb.indexPath, err) return err } } else {