summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--worker/imap/list.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/worker/imap/list.go b/worker/imap/list.go
index 75f189f..6aecbca 100644
--- a/worker/imap/list.go
+++ b/worker/imap/list.go
@@ -12,6 +12,10 @@ func (imapw *IMAPWorker) handleListDirectories(msg *types.ListDirectories) {
go func() {
for mbox := range mailboxes {
+ if !canOpen(mbox) {
+ // no need to pass this to handlers if it can't be opened
+ continue
+ }
imapw.worker.PostMessage(&types.Directory{
Message: types.RespondTo(msg),
Name: mbox.Name,
@@ -30,3 +34,12 @@ func (imapw *IMAPWorker) handleListDirectories(msg *types.ListDirectories) {
&types.Done{types.RespondTo(msg)}, nil)
}
}
+
+func canOpen(mbox *imap.MailboxInfo) bool {
+ for _, attr := range mbox.Attributes {
+ if attr == imap.NoSelectAttr {
+ return false
+ }
+ }
+ return true
+}