From c76c8c867597dc5301ec2becfed05723867b8f3b Mon Sep 17 00:00:00 2001 From: Christoph Petrausch <christoph.petrausch@inovex.de> Date: Mon, 28 May 2018 16:59:26 +0200 Subject: [PATCH] Use time.Ticker for keepalive timer --- protocols/bgp/server/fsm.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/protocols/bgp/server/fsm.go b/protocols/bgp/server/fsm.go index fc342e82..580cce98 100644 --- a/protocols/bgp/server/fsm.go +++ b/protocols/bgp/server/fsm.go @@ -84,7 +84,7 @@ type FSM struct { holdTimer *time.Timer keepaliveTime time.Duration - keepaliveTimer *time.Timer + keepaliveTimer *time.Ticker msgRecvCh chan msgRecvMsg msgRecvFailCh chan msgRecvErr @@ -125,7 +125,7 @@ func NewFSM(peer *Peer, c config.Peer, rib *locRIB.LocRIB) *FSM { holdTimer: time.NewTimer(0), keepaliveTime: time.Duration(c.KeepAlive), - keepaliveTimer: time.NewTimer(0), + keepaliveTimer: nil, routerID: c.RouterID, remote: c.PeerAddress, @@ -458,7 +458,10 @@ func (fsm *FSM) openSent() int { if fsm.holdTime != 0 { fsm.holdTimer.Reset(time.Second * fsm.holdTime) fsm.keepaliveTime = fsm.holdTime / 3 - fsm.keepaliveTimer.Reset(time.Second * fsm.keepaliveTime) + if fsm.keepaliveTimer != nil { + fsm.keepaliveTimer.Stop() + } + fsm.keepaliveTimer = time.NewTicker(fsm.keepaliveTime) } fsm.processOpenOptions(openMsg.OptParams) @@ -624,7 +627,6 @@ func (fsm *FSM) openConfirm() int { fsm.connectRetryCounter++ return fsm.changeState(Idle, fmt.Sprintf("Failed to send keepalive: %v", err)) } - fsm.keepaliveTimer.Reset(time.Second * fsm.keepaliveTime) continue case c := <-fsm.conCh: if fsm.con2 != nil { @@ -782,7 +784,6 @@ func (fsm *FSM) established() int { fsm.connectRetryCounter++ return fsm.changeState(Idle, fmt.Sprintf("Failed to send keepalive: %v", err)) } - fsm.keepaliveTimer.Reset(time.Second * fsm.keepaliveTime) continue case c := <-fsm.conCh: c.Close() -- GitLab