summaryrefslogtreecommitdiffhomepage
path: root/server/fsm.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/fsm.go')
-rw-r--r--server/fsm.go10
1 files changed, 7 insertions, 3 deletions
diff --git a/server/fsm.go b/server/fsm.go
index 34f8b1f1..0f3e5538 100644
--- a/server/fsm.go
+++ b/server/fsm.go
@@ -308,6 +308,9 @@ func (fsm *FSM) connectLoop() error {
ticker := time.NewTicker(time.Duration(tick) * time.Second)
ticker.Stop()
+ timer := time.NewTimer(time.Duration(tick) * time.Second)
+ timer.Stop()
+
connect := func() {
if fsm.state == bgp.BGP_FSM_ACTIVE && !fsm.pConf.GracefulRestart.State.PeerRestarting {
addr := fsm.pConf.Config.NeighborAddress
@@ -366,12 +369,13 @@ func (fsm *FSM) connectLoop() error {
}).Debug("stop connect loop")
ticker.Stop()
return nil
+ case <-timer.C:
+ ticker = time.NewTicker(time.Duration(tick) * time.Second)
+ connect()
case <-ticker.C:
connect()
case <-fsm.getActiveCh:
- time.Sleep(time.Duration(r.Intn(MIN_CONNECT_RETRY)+MIN_CONNECT_RETRY) * time.Second)
- connect()
- ticker = time.NewTicker(time.Duration(tick) * time.Second)
+ timer.Reset(time.Duration(r.Intn(MIN_CONNECT_RETRY)+MIN_CONNECT_RETRY) * time.Second)
}
}
}