|
|
@@ -10,6 +10,7 @@ import (
|
|
10
|
10
|
"slices"
|
|
11
|
11
|
"strconv"
|
|
12
|
12
|
"strings"
|
|
|
13
|
+ "sync"
|
|
13
|
14
|
"text/template"
|
|
14
|
15
|
"time"
|
|
15
|
16
|
|
|
|
@@ -225,18 +226,32 @@ func (d *Doctor) checkNetwork(ntw mtglib.Network) bool {
|
|
225
|
226
|
dcs := slices.Collect(maps.Keys(essentials.TelegramCoreAddresses))
|
|
226
|
227
|
slices.Sort(dcs)
|
|
227
|
228
|
|
|
|
229
|
+ errs := make([]error, len(dcs))
|
|
|
230
|
+
|
|
|
231
|
+ var wg sync.WaitGroup
|
|
|
232
|
+ for i, dc := range dcs {
|
|
|
233
|
+ wg.Go(func() {
|
|
|
234
|
+ defer func() {
|
|
|
235
|
+ if r := recover(); r != nil {
|
|
|
236
|
+ errs[i] = fmt.Errorf("panic: %v", r)
|
|
|
237
|
+ }
|
|
|
238
|
+ }()
|
|
|
239
|
+ errs[i] = d.checkNetworkAddresses(ntw, essentials.TelegramCoreAddresses[dc])
|
|
|
240
|
+ })
|
|
|
241
|
+ }
|
|
|
242
|
+ wg.Wait()
|
|
|
243
|
+
|
|
228
|
244
|
ok := true
|
|
229
|
245
|
|
|
230
|
|
- for _, dc := range dcs {
|
|
231
|
|
- err := d.checkNetworkAddresses(ntw, essentials.TelegramCoreAddresses[dc])
|
|
232
|
|
- if err == nil {
|
|
|
246
|
+ for i, dc := range dcs {
|
|
|
247
|
+ if errs[i] == nil {
|
|
233
|
248
|
tplODCConnect.Execute(os.Stdout, map[string]any{ //nolint: errcheck
|
|
234
|
249
|
"dc": dc,
|
|
235
|
250
|
})
|
|
236
|
251
|
} else {
|
|
237
|
252
|
tplEDCConnect.Execute(os.Stdout, map[string]any{ //nolint: errcheck
|
|
238
|
253
|
"dc": dc,
|
|
239
|
|
- "error": err,
|
|
|
254
|
+ "error": errs[i],
|
|
240
|
255
|
})
|
|
241
|
256
|
ok = false
|
|
242
|
257
|
}
|