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();
         }