diff --git a/protocols/bgp/server/fsm_established.go b/protocols/bgp/server/fsm_established.go
index 5ea39ba2158a62ff40cfe5efad9fa4632b1bb4ac..153a41e6937da43117e03342f88b55eba7ad120f 100644
--- a/protocols/bgp/server/fsm_established.go
+++ b/protocols/bgp/server/fsm_established.go
@@ -136,6 +136,7 @@ func (s *establishedState) holdTimerExpired() (state, string) {
 func (s *establishedState) keepaliveTimerExpired() (state, string) {
 	err := s.fsm.sendKeepalive()
 	if err != nil {
+		s.uninit()
 		stopTimer(s.fsm.connectRetryTimer)
 		s.fsm.con.Close()
 		s.fsm.connectRetryCounter++