Skip to content

Commit 0223fb3

Browse files
committed
fix style
1 parent 7d9aad3 commit 0223fb3

File tree

2 files changed

+27
-26
lines changed

2 files changed

+27
-26
lines changed

internal/router/local_dc.go

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,45 +18,47 @@ const (
1818
maxEndpointsCheckPerLocation = 5
1919
)
2020

21-
func checkFastestAddress(ctx context.Context, addresses []string) (string, error) {
21+
func checkFastestAddress(ctx context.Context, addresses []string) string {
2222
ctx, cancel := context.WithCancel(ctx)
2323
defer cancel()
2424

25-
results := make(chan string, len(addresses))
26-
errs := make(chan error, len(addresses))
25+
type result struct {
26+
address string
27+
err error
28+
}
29+
results := make(chan result, len(addresses))
30+
defer close(results)
2731

2832
startDial := make(chan struct{})
29-
dialer := net.Dialer{}
33+
var dialer net.Dialer
34+
3035
var wg sync.WaitGroup
36+
defer wg.Wait()
37+
3138
for _, addr := range addresses {
3239
wg.Add(1)
3340
go func(address string) {
3441
defer wg.Done()
35-
3642
<-startDial
3743
conn, err := dialer.DialContext(ctx, "tcp", address)
3844
if err == nil {
39-
results <- address
4045
cancel()
41-
} else {
42-
errs <- err
43-
}
44-
if conn != nil {
4546
_ = conn.Close()
4647
}
48+
results <- result{address: address, err: err}
4749
}(addr)
4850
}
4951

5052
close(startDial)
5153

52-
wg.Wait()
53-
close(results)
54-
close(errs)
55-
56-
if res, ok := <-results; ok {
57-
return res, nil
54+
for range addresses {
55+
res := <-results
56+
if res.err == nil {
57+
return res.address
58+
}
5859
}
59-
return "", xerrors.WithStackTrace(<-errs)
60+
61+
return ""
6062
}
6163

6264
func detectFastestEndpoint(ctx context.Context, endpoints []endpoint.Endpoint) (endpoint.Endpoint, error) {
@@ -98,9 +100,9 @@ func detectFastestEndpoint(ctx context.Context, endpoints []endpoint.Endpoint) (
98100
addressesToPing = append(addressesToPing, ip)
99101
}
100102

101-
fastestAddress, err := checkFastestAddress(ctx, addressesToPing)
102-
if err != nil {
103-
return nil, err
103+
fastestAddress := checkFastestAddress(ctx, addressesToPing)
104+
if fastestAddress == "" {
105+
return nil, xerrors.WithStackTrace(errors.New("failed to check fastest address"))
104106
}
105107
return addressToEndpoint[fastestAddress], nil
106108
}

internal/router/local_dc_test.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ func TestCheckFastestAddress(t *testing.T) {
5151
addr1 := listen1.Addr().String()
5252
addr2 := listen2.Addr().String()
5353

54-
fastest, err := checkFastestAddress(ctx, []string{addr1, addr2})
55-
require.NoError(t, err)
54+
fastest := checkFastestAddress(ctx, []string{addr1, addr2})
55+
require.NotEmpty(t, fastest)
5656

5757
switch fastest {
5858
case addr1:
@@ -79,8 +79,7 @@ func TestCheckFastestAddress(t *testing.T) {
7979

8080
_ = listen2.Close() // for can't accept connections
8181

82-
fastest, err := checkFastestAddress(ctx, []string{addr1, addr2})
83-
require.NoError(t, err)
82+
fastest := checkFastestAddress(ctx, []string{addr1, addr2})
8483
require.Equal(t, addr1, fastest)
8584

8685
_ = listen1.Close()
@@ -96,8 +95,8 @@ func TestCheckFastestAddress(t *testing.T) {
9695
_ = listen1.Close() // for can't accept connections
9796
_ = listen2.Close() // for can't accept connections
9897

99-
_, err = checkFastestAddress(ctx, []string{addr1, addr2})
100-
require.Error(t, err)
98+
res := checkFastestAddress(ctx, []string{addr1, addr2})
99+
require.Empty(t, res)
101100
})
102101
}
103102

0 commit comments

Comments
 (0)