summarylogtreecommitdiffstats
path: root/alps-fix-156.patch
blob: 9172f9847b08c63780d3e5ac4d83b6fa8cb537da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
--- a/plugins/base/imap.go	2022-05-08 10:19:23.329157653 +0200
+++ b/plugins/base/imap.go	2022-05-08 10:23:38.878395784 +0200
@@ -530,14 +530,23 @@
 	}
 
 	ch := make(chan *imap.Message, 1)
-	if err := conn.UidFetch(seqSet, fetch, ch); err != nil {
-		return nil, nil, fmt.Errorf("failed to fetch message: %v", err)
-	}
+	done := make(chan error, 1)
+	go func() {
+		done <- conn.UidFetch(seqSet, fetch, ch)
+	}()
 
+	// There may be multiple FETCH data responses.
+	// Keep the first message and discard the rest.
 	msg := <-ch
 	if msg == nil {
 		return nil, nil, fmt.Errorf("server didn't return message")
 	}
+	for range ch {
+	}
+
+	if err := <-done; err != nil {
+		return nil, nil, fmt.Errorf("failed to fetch message: %v", err)
+	}
 
 	body := msg.GetBody(&partHeaderSection)
 	if body == nil {