@@ -28,7 +28,7 @@ type SweepingProvider struct {
28
28
// New creates a new SweepingProvider that manages provides and reprovides for
29
29
// both DHT swarms (LAN and WAN) in a dual DHT setup.
30
30
func New (d * dual.DHT , opts ... Option ) (* SweepingProvider , error ) {
31
- if d == nil || ( d .LAN == nil || d .WAN == nil ) {
31
+ if d == nil || d .LAN == nil || d .WAN == nil {
32
32
return nil , errors .New ("cannot create sweeping provider for nil dual DHT" )
33
33
}
34
34
@@ -84,21 +84,20 @@ func New(d *dual.DHT, opts ...Option) (*SweepingProvider, error) {
84
84
// runOnBoth runs the provided function on both the LAN and WAN providers in
85
85
// parallel and waits for both to complete.
86
86
func (s * SweepingProvider ) runOnBoth (f func (* provider.SweepingProvider ) error ) error {
87
- var errs [2 ]error
88
- done := make (chan struct {})
87
+ errCh := make (chan error , 1 )
89
88
go func () {
90
- defer close (done )
91
89
err := f (s .LAN )
92
90
if err != nil {
93
- errs [ 0 ] = fmt .Errorf ("LAN provider: %w" , err )
91
+ err = fmt .Errorf ("LAN provider: %w" , err )
94
92
}
93
+ errCh <- err
95
94
}()
96
95
err := f (s .WAN )
97
96
if err != nil {
98
- errs [ 1 ] = fmt .Errorf ("WAN provider: %w" , err )
97
+ err = fmt .Errorf ("WAN provider: %w" , err )
99
98
}
100
- <- done
101
- return errors .Join (errs [:] ... )
99
+ lanErr := <- errCh
100
+ return errors .Join (lanErr , err )
102
101
}
103
102
104
103
// Close stops both DHT providers and releases associated resources.
0 commit comments