mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-17 15:46:44 +00:00
GODT-1482: Comment or mitigate panics, unlock cache when needed.
This commit is contained in:
@ -40,9 +40,9 @@ func (im *imapMailbox) getMessage(storeMessage storeMessageProvider, items []ima
|
||||
for _, item := range items {
|
||||
switch item {
|
||||
case imap.FetchEnvelope:
|
||||
// No need to check IsFullHeaderCached here. API header
|
||||
// contain enough information to build the envelope.
|
||||
msg.Envelope = message.GetEnvelope(m, storeMessage.GetMIMEHeader())
|
||||
// No need to retrieve full header here. API header
|
||||
// contains enough information to build the envelope.
|
||||
msg.Envelope = message.GetEnvelope(m, storeMessage.GetMIMEHeaderFast())
|
||||
case imap.FetchBody, imap.FetchBodyStructure:
|
||||
structure, err := im.getBodyStructure(storeMessage)
|
||||
if err != nil {
|
||||
@ -158,7 +158,10 @@ func (im *imapMailbox) getMessageBodySection(storeMessage storeMessageProvider,
|
||||
|
||||
isMainHeaderRequested := len(section.Path) == 0 && section.Specifier == imap.HeaderSpecifier
|
||||
if isMainHeaderRequested && storeMessage.IsFullHeaderCached() {
|
||||
header = storeMessage.GetHeader()
|
||||
var err error
|
||||
if header, err = storeMessage.GetHeader(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
structure, bodyReader, err := im.getBodyAndStructure(storeMessage)
|
||||
if err != nil {
|
||||
|
||||
@ -383,8 +383,9 @@ func (im *imapMailbox) SearchMessages(isUID bool, criteria *imap.SearchCriteria)
|
||||
}
|
||||
}
|
||||
|
||||
// In order to speed up search it is not needed to check if IsFullHeaderCached.
|
||||
header := storeMessage.GetMIMEHeader()
|
||||
// In order to speed up search it is not needed to always
|
||||
// retrieve the fully cached header.
|
||||
header := storeMessage.GetMIMEHeaderFast()
|
||||
|
||||
if !criteria.SentBefore.IsZero() || !criteria.SentSince.IsZero() {
|
||||
t, err := mail.Header(header).Date()
|
||||
|
||||
@ -99,10 +99,10 @@ type storeMessageProvider interface {
|
||||
Message() *pmapi.Message
|
||||
IsMarkedDeleted() bool
|
||||
|
||||
GetHeader() []byte
|
||||
GetHeader() ([]byte, error)
|
||||
GetRFC822() ([]byte, error)
|
||||
GetRFC822Size() (uint32, error)
|
||||
GetMIMEHeader() textproto.MIMEHeader
|
||||
GetMIMEHeaderFast() textproto.MIMEHeader
|
||||
IsFullHeaderCached() bool
|
||||
GetBodyStructure() (*pkgMsg.BodyStructure, error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user