BGP system test issue fix.
Change-Id: I26f30e800a2d88377fde9d6da8ccca25581250ce
diff --git a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpChannelHandler.java b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpChannelHandler.java
index 3a605f4..63c060f 100755
--- a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpChannelHandler.java
+++ b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpChannelHandler.java
@@ -361,6 +361,13 @@
}
+ //Stop keepalive timer
+ private void stopKeepAliveTimer() {
+ if ((keepAliveTimer != null) && (keepAliveTimer.getKeepAliveTimer() != null)) {
+ keepAliveTimer.getKeepAliveTimer().cancel();
+ }
+ }
+
// *************************
// Channel handler methods
// *************************
@@ -457,9 +464,7 @@
duplicateBGPIdFound = Boolean.FALSE;
}
- if (null != keepAliveTimer) {
- keepAliveTimer.getKeepAliveTimer().cancel();
- }
+ stopKeepAliveTimer();
} else {
bgpconfig.setPeerConnState(peerAddr, BgpPeerCfg.State.IDLE);
log.warn("No bgp ip in channelHandler registered for " + "disconnected peer {}", getPeerInfoString());
@@ -476,6 +481,7 @@
log.error("Disconnecting device {} due to read timeout", getPeerInfoString());
sendNotification(BgpErrorType.HOLD_TIMER_EXPIRED, (byte) 0, null);
state = ChannelState.IDLE;
+ stopKeepAliveTimer();
ctx.getChannel().close();
return;
} else if (e.getCause() instanceof ClosedChannelException) {
@@ -486,6 +492,7 @@
// still print stack trace if debug is enabled
log.debug("StackTrace for previous Exception: ", e.getCause());
}
+ stopKeepAliveTimer();
ctx.getChannel().close();
} else if (e.getCause() instanceof BgpParseException) {
byte[] data = new byte[] {};
@@ -502,6 +509,7 @@
} else if (e.getCause() instanceof RejectedExecutionException) {
log.warn("Could not process message: queue full");
} else {
+ stopKeepAliveTimer();
log.error("Error while processing message from peer " + getPeerInfoString() + "state " + this.state);
ctx.getChannel().close();
}