diff options
Diffstat (limited to 'worker/imap/list.go')
-rw-r--r-- | worker/imap/list.go | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/worker/imap/list.go b/worker/imap/list.go index 2f5e5b4..eff3d49 100644 --- a/worker/imap/list.go +++ b/worker/imap/list.go @@ -14,28 +14,21 @@ func (imapw *IMAPWorker) handleListDirectories(msg *types.ListDirectories) { done <- imapw.client.List("", "*", mailboxes) }() go func() { - for { - select { - case err := <-done: - if err != nil { - imapw.worker.PostMessage(&types.Error{ - Message: types.RespondTo(msg), - Error: err, - }, nil) - } else { - imapw.worker.PostMessage( - &types.Done{types.RespondTo(msg)}, nil) - } - return - case mbox := <-mailboxes: - if mbox != nil { - imapw.worker.PostMessage(&types.Directory{ - Message: types.RespondTo(msg), - Name: mbox.Name, - Attributes: mbox.Attributes, - }, nil) - } - } + for mbox := range mailboxes { + imapw.worker.PostMessage(&types.Directory{ + Message: types.RespondTo(msg), + Name: mbox.Name, + Attributes: mbox.Attributes, + }, nil) + } + if err := <-done; err != nil { + imapw.worker.PostMessage(&types.Error{ + Message: types.RespondTo(msg), + Error: err, + }, nil) + } else { + imapw.worker.PostMessage( + &types.Done{types.RespondTo(msg)}, nil) } }() } |