#6: implement IMAP IDLE (RFC 2177) and CONDSTORE (RFC 7162)

This commit is contained in:
Lucas Rayan committed 2026-07-24 11:43:37 -03:00
1 parent 0ec0698079
commit 6b1e4dc00a
20 files changed
+539 -95

No files matched your search

@@ -9,7 +9,6 @@ package imappresentation
import (
"github.com/emersion/go-imap/v2"
"github.com/emersion/go-imap/v2/imapserver"
)
var errNotYetImplemented = &imap.Error{
@@ -25,14 +24,4 @@ func (s *session) Unsubscribe(_ string) error { return errN
func (s *session) Append(_ string, _ imap.LiteralReader, _ *imap.AppendOptions) (*imap.AppendData, error) {
return nil, errNotYetImplemented
}
// Poll is called by imapserver before the status response of nearly every
// command in the Authenticated/Selected state (see conn.go's c.poll), not
// just in response to an explicit client IDLE/NOOP - returning an error here
// would fail every real command (FETCH, STORE, ...), not just polling. This
// sub-project doesn't push unsolicited EXISTS/EXPUNGE/FETCH updates (no
// IDLE support - see Idle below), so reporting "no updates" via a nil
// return is the correct, spec-compliant no-op, not a stub.
func (s *session) Poll(_ *imapserver.UpdateWriter, _ bool) error { return nil }
func (s *session) Idle(_ *imapserver.UpdateWriter, _ <-chan struct{}) error {
return errNotYetImplemented
}