about summary refs log tree commit diff stats
path: root/worker
diff options
context:
space:
mode:
authorReto Brunner <reto@labrat.space>2020-02-15 12:37:18 +0100
committerDrew DeVault <sir@cmpwn.com>2020-02-16 10:41:11 -0500
commit30c0a9fba471bcd023c8aeebb3901803bb35d31f (patch)
treebb5943328da9082cd2d59d3910513ea6ccccb0d6 /worker
parent3e7e236f50265d53528b3168c192a0254413db06 (diff)
downloadaerc-30c0a9fba471bcd023c8aeebb3901803bb35d31f.tar.gz
imap: fix double closing idleStop
The idle restart code is at the end of handleMessage in the worker.
However if an unsupported msg comes in, we returned early, skipping the re-init.
That lead to a crash due to double closing idleStop in the next iteration.
Diffstat (limited to 'worker')
-rw-r--r--worker/imap/worker.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/worker/imap/worker.go b/worker/imap/worker.go
index 4d3e51c..ddd95b6 100644
--- a/worker/imap/worker.go
+++ b/worker/imap/worker.go
@@ -66,6 +66,8 @@ func (w *IMAPWorker) handleMessage(msg types.WorkerMessage) error {
 		}
 	}
 
+	var reterr error // will be returned at the end, needed to support idle
+
 	switch msg := msg.(type) {
 	case *types.Unsupported:
 		// No-op
@@ -180,7 +182,7 @@ func (w *IMAPWorker) handleMessage(msg types.WorkerMessage) error {
 	case *types.SearchDirectory:
 		w.handleSearchDirectory(msg)
 	default:
-		return errUnsupported
+		reterr = errUnsupported
 	}
 
 	if w.idleStop != nil {
@@ -189,7 +191,7 @@ func (w *IMAPWorker) handleMessage(msg types.WorkerMessage) error {
 			w.idleDone <- w.client.idle.IdleWithFallback(w.idleStop, 0)
 		}()
 	}
-	return nil
+	return reterr
 }
 
 func (w *IMAPWorker) handleImapUpdate(update client.Update) {
committer Kartik Agaram <vc@akkartik.com> 2018-12-01 14:13:33 -0800 4814' href='/akkartik/mu/commit/html/044space_surround.cc.html?h=hlt&id=e4ac3c9e6e5464a0fc0f8fd3763a572e0e180c04'>e4ac3c9e ^
805d58c6 ^
e4ac3c9e ^


4a39d12d ^
e4ac3c9e ^
805d58c6 ^
672e3e50 ^

a654e4ec ^



e5c11a51 ^






















a654e4ec ^

672e3e50 ^
e5c11a51 ^
e4ac3c9e ^
a654e4ec ^
204dae92 ^






5fe060d5 ^











































e4ac3c9e ^
5fe060d5 ^






e4ac3c9e ^
5fe060d5 ^









672e3e50 ^


a654e4ec ^
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138