Commit aa81f7a
committed
Fix 5 compatibility issues in Telegram Phase 4
Issues found and fixed during compatibility review:
CRITICAL:
1. Handler.Approver data race — goroutines racing on shared pointer
→ Replaced single *TelegramApprover with sync.Map keyed by chatID
→ Added SetApprover/GetApprover/DeleteApprover methods on Handler
→ handleCallback now looks up approver by callback's chat ID
2. /new command NPE — nil Approver dereference when no message processed yet
→ Now uses handler.GetApprover(chatID) which returns nil gracefully
MEDIUM:
3. Same-chat message racing — two rapid messages corrupt session history
→ Added per-chat sync.Mutex serialization via chatMu sync.Map
→ handleChatMessage locks per-chat before processing
MINOR:
4. Dead os import + dead code in approver.go — removed
CONFIRMED OK:
5. Project-level config — LoadConfig always loads ./odek.json, confirmed1 parent aaa68a9 commit aa81f7a
3 files changed
Lines changed: 56 additions & 20 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
| |||
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
20 | 32 | | |
21 | 33 | | |
22 | 34 | | |
| |||
85 | 97 | | |
86 | 98 | | |
87 | 99 | | |
88 | | - | |
89 | | - | |
| 100 | + | |
| 101 | + | |
90 | 102 | | |
91 | 103 | | |
92 | 104 | | |
| |||
164 | 176 | | |
165 | 177 | | |
166 | 178 | | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
167 | 185 | | |
168 | 186 | | |
169 | | - | |
| 187 | + | |
| 188 | + | |
170 | 189 | | |
171 | 190 | | |
172 | 191 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | 7 | | |
9 | 8 | | |
10 | 9 | | |
| |||
218 | 217 | | |
219 | 218 | | |
220 | 219 | | |
221 | | - | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
228 | | - | |
229 | | - | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
64 | 87 | | |
65 | 88 | | |
66 | 89 | | |
| |||
233 | 256 | | |
234 | 257 | | |
235 | 258 | | |
236 | | - | |
237 | | - | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
238 | 265 | | |
239 | 266 | | |
240 | 267 | | |
| |||
0 commit comments