aboutsummaryrefslogtreecommitdiffstats
path: root/worker/maildir
diff options
context:
space:
mode:
Diffstat (limited to 'worker/maildir')
-rw-r--r--worker/maildir/worker.go23
1 files changed, 19 insertions, 4 deletions
diff --git a/worker/maildir/worker.go b/worker/maildir/worker.go
index 08628383..cc03ec81 100644
--- a/worker/maildir/worker.go
+++ b/worker/maildir/worker.go
@@ -406,10 +406,25 @@ func (w *Worker) handleOpenDirectory(msg *types.OpenDirectory) error {
func (w *Worker) handleFetchDirectoryContents(
msg *types.FetchDirectoryContents) error {
- uids, err := w.c.UIDs(*w.selected)
- if err != nil {
- w.worker.Logger.Printf("error scanning uids: %v", err)
- return err
+ var (
+ uids []uint32
+ err error
+ )
+ if len(msg.FilterCriteria) > 0 {
+ filter, err := parseSearch(msg.FilterCriteria)
+ if err != nil {
+ return err
+ }
+ uids, err = w.search(filter)
+ if err != nil {
+ return err
+ }
+ } else {
+ uids, err = w.c.UIDs(*w.selected)
+ if err != nil {
+ w.worker.Logger.Printf("error scanning uids: %v", err)
+ return err
+ }
}
sortedUids, err := w.sort(uids, msg.SortCriteria)
if err != nil {