about summary refs log tree commit diff stats
path: root/worker
diff options
context:
space:
mode:
Diffstat (limited to 'worker')
-rw-r--r--worker/lib/parse.go10
-rw-r--r--worker/maildir/search.go8
2 files changed, 11 insertions, 7 deletions
diff --git a/worker/lib/parse.go b/worker/lib/parse.go
index ded7a83..a14a6d3 100644
--- a/worker/lib/parse.go
+++ b/worker/lib/parse.go
@@ -21,8 +21,9 @@ var dateRe = regexp.MustCompile(`(((Mon|Tue|Wed|Thu|Fri|Sat|Sun))[,]?\s[0-9]{1,2
 	`([0-9]{4})\s([0-9]{2}):([0-9]{2})(:([0-9]{2}))?\s([\+|\-][0-9]{4})\s?`)
 
 func FetchEntityPartReader(e *message.Entity, index []int) (io.Reader, error) {
-	if len(index) < 1 {
-		return nil, fmt.Errorf("no part to read")
+	if len(index) == 0 {
+		// non multipart, simply return everything
+		return bufReader(e)
 	}
 	if mpr := e.MultipartReader(); mpr != nil {
 		idx := 0
@@ -41,10 +42,7 @@ func FetchEntityPartReader(e *message.Entity, index []int) (io.Reader, error) {
 			}
 		}
 	}
-	if index[0] != 1 {
-		return nil, fmt.Errorf("cannont return non-first part of non-multipart")
-	}
-	return bufReader(e)
+	return nil, fmt.Errorf("FetchEntityPartReader: unexpected code reached")
 }
 
 //TODO: the UI doesn't seem to like readers which aren't buffers
diff --git a/worker/maildir/search.go b/worker/maildir/search.go
index 005f6fa..ad3a45f 100644
--- a/worker/maildir/search.go
+++ b/worker/maildir/search.go
@@ -10,6 +10,7 @@ import (
 
 	"git.sr.ht/~sircmpwn/getopt"
 
+	"git.sr.ht/~sircmpwn/aerc/lib"
 	"git.sr.ht/~sircmpwn/aerc/models"
 )
 
@@ -138,7 +139,12 @@ func (w *Worker) searchKey(key uint32, criteria *searchCriteria,
 	}
 	if parts&BODY > 0 {
 		// TODO: select which part to search, maybe look for text/plain
-		reader, err := message.NewBodyPartReader([]int{1})
+		mi, err := message.MessageInfo()
+		if err != nil {
+			return false, err
+		}
+		path := lib.FindFirstNonMultipart(mi.BodyStructure, nil)
+		reader, err := message.NewBodyPartReader(path)
 		if err != nil {
 			return false, err
 		}