From 31a465e2e54f66c79d164616b4c9e32d05939dce Mon Sep 17 00:00:00 2001 From: Lucas Rayan Date: Fri, 24 Jul 2026 11:57:22 -0300 Subject: [PATCH] #6: fix pointer type matching in numSetIter for IMAP STORE/FETCH --- .../protocols/internal/presentation/imap/backend.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/protocols/internal/presentation/imap/backend.go b/services/protocols/internal/presentation/imap/backend.go index 58d3569..269c7cb 100644 --- a/services/protocols/internal/presentation/imap/backend.go +++ b/services/protocols/internal/presentation/imap/backend.go @@ -160,14 +160,25 @@ func matchFolders(recs []port.ImapFolderRecord, ref string, patterns []string) [ // pattern of iterating known messages and calling NumSet.Contains, rather // than trying to resolve "*" ranges ourselves). func (s *session) numSetIter(numSet imap.NumSet, messages []port.MessageRecord, f func(seqNum uint32, msg port.MessageRecord)) { + if numSet == nil { + return + } for i, msg := range messages { seqNum := uint32(i) + 1 var contains bool switch set := numSet.(type) { case imap.SeqSet: contains = set.Contains(seqNum) + case *imap.SeqSet: + if set != nil { + contains = set.Contains(seqNum) + } case imap.UIDSet: contains = set.Contains(imap.UID(msg.UID)) + case *imap.UIDSet: + if set != nil { + contains = set.Contains(imap.UID(msg.UID)) + } } if contains { f(seqNum, msg)