Do not ignore errors

This commit is contained in:
Michal Horejsek
2020-09-03 14:36:12 +02:00
parent 9218598140
commit bb1d27a5be
9 changed files with 63 additions and 22 deletions

View File

@ -35,7 +35,7 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/)
* Set first-start to false in bridge, not in frontend. * Set first-start to false in bridge, not in frontend.
* GODT-400 Refactor sendingInfo. * GODT-400 Refactor sendingInfo.
* GODT-513 Update routes to API v4. * GODT-513 Update routes to API v4.
* GODT-551 Do not ignore errors during message flagging.
### Fixed ### Fixed
* GODT-454 Fix send on closed channel when receiving unencrypted send confirmation from GUI. * GODT-454 Fix send on closed channel when receiving unencrypted send confirmation from GUI.

View File

@ -164,7 +164,9 @@ func (ib *imapBackend) Login(_ *imap.ConnInfo, username, password string) (goIMA
if err := imapUser.user.CheckBridgeLogin(password); err != nil { if err := imapUser.user.CheckBridgeLogin(password); err != nil {
log.WithError(err).Error("Could not check bridge password") log.WithError(err).Error("Could not check bridge password")
_ = imapUser.Logout() if err := imapUser.Logout(); err != nil {
log.WithError(err).Warn("Could not logout user after unsuccessful login check")
}
// Apple Mail sometimes generates a lot of requests very quickly. // Apple Mail sometimes generates a lot of requests very quickly.
// It's therefore good to have a timeout after a bad login so that we can slow // It's therefore good to have a timeout after a bad login so that we can slow
// those requests down a little bit. // those requests down a little bit.

View File

@ -80,7 +80,7 @@ func (ib *imapBackend) removeFromCache(userID, label, toRemove string) {
func (ib *imapBackend) getCacheList(userID, label string) (list string) { func (ib *imapBackend) getCacheList(userID, label string) (list string) {
if err := ib.loadIMAPCache(); err != nil { if err := ib.loadIMAPCache(); err != nil {
log.Warn("Could not load cache: ", err) log.WithError(err).Warn("Could not load cache")
} }
ib.imapCacheLock.Lock() ib.imapCacheLock.Lock()
@ -97,7 +97,9 @@ func (ib *imapBackend) getCacheList(userID, label string) (list string) {
ib.imapCacheLock.Unlock() ib.imapCacheLock.Unlock()
_ = ib.saveIMAPCache() if err := ib.saveIMAPCache(); err != nil {
log.WithError(err).Warn("Could not save cache")
}
return return
} }

View File

@ -77,19 +77,29 @@ func (im *imapMailbox) setFlags(messageIDs, flags []string) error {
} }
if seen { if seen {
_ = im.storeMailbox.MarkMessagesRead(messageIDs) if err := im.storeMailbox.MarkMessagesRead(messageIDs); err != nil {
return err
}
} else { } else {
_ = im.storeMailbox.MarkMessagesUnread(messageIDs) if err := im.storeMailbox.MarkMessagesUnread(messageIDs); err != nil {
return err
}
} }
if flagged { if flagged {
_ = im.storeMailbox.MarkMessagesStarred(messageIDs) if err := im.storeMailbox.MarkMessagesStarred(messageIDs); err != nil {
return err
}
} else { } else {
_ = im.storeMailbox.MarkMessagesUnstarred(messageIDs) if err := im.storeMailbox.MarkMessagesUnstarred(messageIDs); err != nil {
return err
}
} }
if deleted { if deleted {
_ = im.storeMailbox.DeleteMessages(messageIDs) if err := im.storeMailbox.DeleteMessages(messageIDs); err != nil {
return err
}
} }
spamMailbox, err := im.storeAddress.GetMailbox("Spam") spamMailbox, err := im.storeAddress.GetMailbox("Spam")
@ -97,9 +107,13 @@ func (im *imapMailbox) setFlags(messageIDs, flags []string) error {
return err return err
} }
if spam { if spam {
_ = spamMailbox.LabelMessages(messageIDs) if err := spamMailbox.LabelMessages(messageIDs); err != nil {
return err
}
} else { } else {
_ = spamMailbox.UnlabelMessages(messageIDs) if err := spamMailbox.UnlabelMessages(messageIDs); err != nil {
return err
}
} }
return nil return nil
@ -111,22 +125,32 @@ func (im *imapMailbox) addOrRemoveFlags(operation imap.FlagsOp, messageIDs, flag
case imap.SeenFlag: case imap.SeenFlag:
switch operation { switch operation {
case imap.AddFlags: case imap.AddFlags:
_ = im.storeMailbox.MarkMessagesRead(messageIDs) if err := im.storeMailbox.MarkMessagesRead(messageIDs); err != nil {
return err
}
case imap.RemoveFlags: case imap.RemoveFlags:
_ = im.storeMailbox.MarkMessagesUnread(messageIDs) if err := im.storeMailbox.MarkMessagesUnread(messageIDs); err != nil {
return err
}
} }
case imap.FlaggedFlag: case imap.FlaggedFlag:
switch operation { switch operation {
case imap.AddFlags: case imap.AddFlags:
_ = im.storeMailbox.MarkMessagesStarred(messageIDs) if err := im.storeMailbox.MarkMessagesStarred(messageIDs); err != nil {
return err
}
case imap.RemoveFlags: case imap.RemoveFlags:
_ = im.storeMailbox.MarkMessagesUnstarred(messageIDs) if err := im.storeMailbox.MarkMessagesUnstarred(messageIDs); err != nil {
return err
}
} }
case imap.DeletedFlag: case imap.DeletedFlag:
if operation == imap.RemoveFlags { if operation == imap.RemoveFlags {
break // Nothing to do, no message has the \Deleted flag. break // Nothing to do, no message has the \Deleted flag.
} }
_ = im.storeMailbox.DeleteMessages(messageIDs) if err := im.storeMailbox.DeleteMessages(messageIDs); err != nil {
return err
}
case imap.AnsweredFlag, imap.DraftFlag, imap.RecentFlag: case imap.AnsweredFlag, imap.DraftFlag, imap.RecentFlag:
// Not supported. // Not supported.
case message.AppleMailJunkFlag, message.ThunderbirdJunkFlag: case message.AppleMailJunkFlag, message.ThunderbirdJunkFlag:
@ -140,9 +164,13 @@ func (im *imapMailbox) addOrRemoveFlags(operation imap.FlagsOp, messageIDs, flag
// No label removal is necessary because Spam and Inbox are both exclusive labels so the backend // No label removal is necessary because Spam and Inbox are both exclusive labels so the backend
// will automatically take care of label removal. // will automatically take care of label removal.
case imap.AddFlags: case imap.AddFlags:
_ = storeMailbox.LabelMessages(messageIDs) if err := storeMailbox.LabelMessages(messageIDs); err != nil {
return err
}
case imap.RemoveFlags: case imap.RemoveFlags:
_ = storeMailbox.UnlabelMessages(messageIDs) if err := storeMailbox.UnlabelMessages(messageIDs); err != nil {
return err
}
} }
} }
} }

View File

@ -359,7 +359,9 @@ func (su *smtpUser) Send(from string, to []string, messageReader io.Reader) (err
return errors.New("error decoding subject message " + message.Header.Get("Subject")) return errors.New("error decoding subject message " + message.Header.Get("Subject"))
} }
if !su.continueSendingUnencryptedMail(subject) { if !su.continueSendingUnencryptedMail(subject) {
_ = su.client().DeleteMessages([]string{message.ID}) if err := su.client().DeleteMessages([]string{message.ID}); err != nil {
log.WithError(err).Warn("Failed to delete canceled messages")
}
return errors.New("sending was canceled by user") return errors.New("sending was canceled by user")
} }
} }

View File

@ -45,7 +45,9 @@ func (c *Cache) getEventID(userID string) string {
c.lock.Lock() c.lock.Lock()
defer c.lock.Unlock() defer c.lock.Unlock()
_ = c.loadCache() if err := c.loadCache(); err != nil {
log.WithError(err).Warn("Problem to load store cache")
}
if c.cache == nil { if c.cache == nil {
c.cache = map[string]map[string]string{} c.cache = map[string]map[string]string{}

View File

@ -41,7 +41,7 @@ type Mailbox struct {
} }
func newMailbox(storeAddress *Address, labelID, labelPrefix, labelName, color string) (mb *Mailbox, err error) { func newMailbox(storeAddress *Address, labelID, labelPrefix, labelName, color string) (mb *Mailbox, err error) {
_ = storeAddress.store.db.Update(func(tx *bolt.Tx) error { err = storeAddress.store.db.Update(func(tx *bolt.Tx) error {
mb, err = txNewMailbox(tx, storeAddress, labelID, labelPrefix, labelName, color) mb, err = txNewMailbox(tx, storeAddress, labelID, labelPrefix, labelName, color)
return err return err
}) })

View File

@ -129,6 +129,9 @@ func (storeMailbox *Mailbox) MarkMessagesRead(apiIDs []string) error {
ids = append(ids, apiID) ids = append(ids, apiID)
} }
} }
if len(ids) == 0 {
return nil
}
return storeMailbox.client().MarkMessagesRead(ids) return storeMailbox.client().MarkMessagesRead(ids)
} }

View File

@ -218,7 +218,9 @@ func (store *Store) deleteMailboxEvent(labelID string) error {
store.lock.Lock() store.lock.Lock()
defer store.lock.Unlock() defer store.lock.Unlock()
_ = store.removeMailboxCount(labelID) if err := store.removeMailboxCount(labelID); err != nil {
log.WithError(err).Warn("Problem to remove mailbox counts while deleting mailbox")
}
for _, a := range store.addresses { for _, a := range store.addresses {
if err := a.deleteMailboxEvent(labelID); err != nil { if err := a.deleteMailboxEvent(labelID); err != nil {