storage/imapsql: Fix nil pointer reference when no IMAP filters are set

This commit is contained in:
fox.cpp 2020-08-21 21:34:34 +03:00
parent 2344c9f87f
commit 1da80d9ac5
No known key found for this signature in database
GPG key ID: 5B991F6215D2FCC0
2 changed files with 6 additions and 2 deletions

View file

@ -45,6 +45,9 @@ func NewGroup(_, instName string, _, _ []string) (module.Module, error) {
} }
func (g *Group) IMAPFilter(accountName string, meta *module.MsgMetadata, hdr textproto.Header, body buffer.Buffer) (folder string, flags []string, err error) { func (g *Group) IMAPFilter(accountName string, meta *module.MsgMetadata, hdr textproto.Header, body buffer.Buffer) (folder string, flags []string, err error) {
if g == nil {
return "", nil, nil
}
var ( var (
finalFolder string finalFolder string
finalFlags = make([]string, 0, len(g.Filters)) finalFlags = make([]string, 0, len(g.Filters))

View file

@ -145,11 +145,12 @@ func (d *delivery) AddRcpt(ctx context.Context, rcptTo string) error {
func (d *delivery) Body(ctx context.Context, header textproto.Header, body buffer.Buffer) error { func (d *delivery) Body(ctx context.Context, header textproto.Header, body buffer.Buffer) error {
defer trace.StartRegion(ctx, "sql/Body").End() defer trace.StartRegion(ctx, "sql/Body").End()
if !d.msgMeta.Quarantine { if !d.msgMeta.Quarantine && d.store.filters != nil {
for rcpt := range d.addedRcpts { for rcpt := range d.addedRcpts {
folder, flags, err := d.store.filters.IMAPFilter(rcpt, d.msgMeta, header, body) folder, flags, err := d.store.filters.IMAPFilter(rcpt, d.msgMeta, header, body)
if err != nil { if err != nil {
return err d.store.Log.Error("IMAPFilter failed", err, "rcpt", rcpt)
continue
} }
d.d.UserMailbox(rcpt, folder, flags) d.d.UserMailbox(rcpt, folder, flags)
} }