diff options
Diffstat (limited to 'worker/maildir/worker.go')
-rw-r--r-- | worker/maildir/worker.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/worker/maildir/worker.go b/worker/maildir/worker.go index 533bb7c..3e59da6 100644 --- a/worker/maildir/worker.go +++ b/worker/maildir/worker.go @@ -407,5 +407,19 @@ func (w *Worker) handleAppendMessage(msg *types.AppendMessage) error { } func (w *Worker) handleSearchDirectory(msg *types.SearchDirectory) error { - return errUnsupported + w.worker.Logger.Printf("Searching directory %v with args: %v", *w.selected, msg.Argv) + criteria, err := parseSearch(msg.Argv) + if err != nil { + return err + } + w.worker.Logger.Printf("Searching with parsed criteria: %#v", criteria) + uids, err := w.search(criteria) + if err != nil { + return err + } + w.worker.PostMessage(&types.SearchResults{ + Message: types.RespondTo(msg), + Uids: uids, + }, nil) + return nil } |