Skip to content

Commit 8fcd4f4

Browse files
authored
client: reconnect more quickly if it's a dial error (fatedier#2240)
1 parent 976fd81 commit 8fcd4f4

File tree

9 files changed

+20
-14
lines changed

9 files changed

+20
-14
lines changed

client/service.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package client
1717
import (
1818
"context"
1919
"crypto/tls"
20+
"errors"
2021
"fmt"
2122
"io/ioutil"
2223
"net"
@@ -177,9 +178,16 @@ func (svr *Service) keepControllerWorking() {
177178
if err != nil {
178179
xl.Warn("reconnect to server error: %v", err)
179180
time.Sleep(delayTime)
180-
delayTime = delayTime * 2
181-
if delayTime > maxDelayTime {
182-
delayTime = maxDelayTime
181+
182+
opErr := &net.OpError{}
183+
// quick retry for dial error
184+
if errors.As(err, &opErr) && opErr.Op == "dial" {
185+
delayTime = 2 * time.Second
186+
} else {
187+
delayTime = delayTime * 2
188+
if delayTime > maxDelayTime {
189+
delayTime = maxDelayTime
190+
}
183191
}
184192
continue
185193
}

pkg/config/visitor.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"gopkg.in/ini.v1"
2424
)
2525

26-
2726
// Visitor
2827
var (
2928
visitorConfTypeMap = map[string]reflect.Type{
@@ -64,7 +63,6 @@ type XTCPVisitorConf struct {
6463
BaseVisitorConf `ini:",extends" json:"inline"`
6564
}
6665

67-
6866
// DefaultVisitorConf creates a empty VisitorConf object by visitorType.
6967
// If visitorType doesn't exist, return nil.
7068
func DefaultVisitorConf(visitorType string) VisitorConf {

pkg/config/visitor_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import (
1919

2020
"github.com/fatedier/frp/pkg/consts"
2121

22-
"gopkg.in/ini.v1"
2322
"github.com/stretchr/testify/assert"
23+
"gopkg.in/ini.v1"
2424
)
2525

2626
const testVisitorPrefix = "test."

tests/ci/cmd_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func TestCmdTCP(t *testing.T) {
1919
if assert.NoError(err) {
2020
defer s.Stop()
2121
}
22-
time.Sleep(200 * time.Millisecond)
22+
time.Sleep(500 * time.Millisecond)
2323

2424
c := util.NewProcess(consts.FRPC_BIN_PATH, []string{"tcp", "-s", "127.0.0.1:20000", "-t", "123", "-u", "test",
2525
"-l", "10701", "-r", "20801", "-n", "tcp_test"})
@@ -43,7 +43,7 @@ func TestCmdUDP(t *testing.T) {
4343
if assert.NoError(err) {
4444
defer s.Stop()
4545
}
46-
time.Sleep(200 * time.Millisecond)
46+
time.Sleep(500 * time.Millisecond)
4747

4848
c := util.NewProcess(consts.FRPC_BIN_PATH, []string{"udp", "-s", "127.0.0.1:20000", "-t", "123", "-u", "test",
4949
"-l", "10702", "-r", "20802", "-n", "udp_test"})
@@ -67,7 +67,7 @@ func TestCmdHTTP(t *testing.T) {
6767
if assert.NoError(err) {
6868
defer s.Stop()
6969
}
70-
time.Sleep(200 * time.Millisecond)
70+
time.Sleep(500 * time.Millisecond)
7171

7272
c := util.NewProcess(consts.FRPC_BIN_PATH, []string{"http", "-s", "127.0.0.1:20000", "-t", "123", "-u", "test",
7373
"-n", "udp_test", "-l", "10704", "--custom_domain", "127.0.0.1"})

tests/ci/health/health_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ func TestHealthCheck(t *testing.T) {
175175
defer frpsProcess.Stop()
176176
}
177177

178-
time.Sleep(100 * time.Millisecond)
178+
time.Sleep(500 * time.Millisecond)
179179

180180
frpcProcess := util.NewProcess(consts.FRPC_SUB_BIN_PATH, []string{"-c", frpcCfgPath})
181181
err = frpcProcess.Start()

tests/ci/normal_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func TestMain(m *testing.M) {
4242
panic(err)
4343
}
4444

45-
time.Sleep(200 * time.Millisecond)
45+
time.Sleep(500 * time.Millisecond)
4646
p2 := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", "./auto_test_frpc.ini"})
4747
if err = p2.Start(); err != nil {
4848
panic(err)

tests/ci/reconnect_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func TestReconnect(t *testing.T) {
5656
defer frpsProcess.Stop()
5757
}
5858

59-
time.Sleep(200 * time.Millisecond)
59+
time.Sleep(500 * time.Millisecond)
6060

6161
frpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
6262
err = frpcProcess.Start()

tests/ci/reload_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func TestReload(t *testing.T) {
9494
defer frpsProcess.Stop()
9595
}
9696

97-
time.Sleep(200 * time.Millisecond)
97+
time.Sleep(500 * time.Millisecond)
9898

9999
frpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
100100
err = frpcProcess.Start()

tests/ci/template_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func TestConfTemplate(t *testing.T) {
5555
defer frpsProcess.Stop()
5656
}
5757

58-
time.Sleep(200 * time.Millisecond)
58+
time.Sleep(500 * time.Millisecond)
5959

6060
frpcProcess := util.NewProcess("env", []string{"FRP_TOKEN=123456", "TCP_REMOTE_PORT=20801", consts.FRPC_BIN_PATH, "-c", frpcCfgPath})
6161
err = frpcProcess.Start()

0 commit comments

Comments
 (0)