aboutsummaryrefslogtreecommitdiff
path: root/worker/imap/list.go
diff options
context:
space:
mode:
Diffstat (limited to 'worker/imap/list.go')
-rw-r--r--worker/imap/list.go37
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)
}
}()
}