Fix for BGP sessions not timing out
Change-Id: I57975fefe6d54934cbbde95b6d22e03bea835289
diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpFrameDecoder.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpFrameDecoder.java
index a85e08d..781403d 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpFrameDecoder.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpFrameDecoder.java
@@ -93,7 +93,7 @@
bgpSession.prepareBgpNotification(errorCode, errorSubcode,
null);
ctx.getChannel().write(txMessage);
- bgpSession.closeChannel(ctx);
+ bgpSession.closeSession(ctx);
return null;
}
}
@@ -116,7 +116,7 @@
ChannelBuffer txMessage =
bgpSession.prepareBgpNotificationBadMessageLength(length);
ctx.getChannel().write(txMessage);
- bgpSession.closeChannel(ctx);
+ bgpSession.closeSession(ctx);
return null;
}
@@ -169,7 +169,7 @@
bgpSession.prepareBgpNotification(errorCode, errorSubcode,
data);
ctx.getChannel().write(txMessage);
- bgpSession.closeChannel(ctx);
+ bgpSession.closeSession(ctx);
return null;
}
return null;
diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
index 0c77461..7a3fe45 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
@@ -226,13 +226,22 @@
}
/**
- * Closes the channel.
+ * Closes the session.
+ *
+ * @param ctx the Channel Handler Context
+ */
+ void closeSession(ChannelHandlerContext ctx) {
+ timer.stop();
+ closeChannel(ctx);
+ }
+
+ /**
+ * Closes the netty channel.
*
* @param ctx the Channel Handler Context
*/
void closeChannel(ChannelHandlerContext ctx) {
isClosed = true;
- timer.stop();
ctx.getChannel().close();
}
@@ -320,7 +329,7 @@
ChannelBuffer txMessage = prepareBgpNotificationBadMessageLength(
message.readableBytes() + BgpConstants.BGP_HEADER_LENGTH);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
return;
}
@@ -345,7 +354,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, data);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
return;
}
@@ -370,7 +379,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, null);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
return;
}
}
@@ -393,7 +402,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, null);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
return;
}
@@ -416,7 +425,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, null);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
return;
}
// TODO: Parse the optional parameters (if needed)
@@ -485,7 +494,7 @@
ChannelBuffer txMessage = prepareBgpNotificationBadMessageLength(
message.readableBytes() + BgpConstants.BGP_HEADER_LENGTH);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
return;
}
@@ -1284,7 +1293,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, null);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1307,7 +1316,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, null);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1335,7 +1344,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, data);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1371,7 +1380,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, data);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1405,7 +1414,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, data);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1442,7 +1451,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, data);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1479,7 +1488,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, data);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1513,7 +1522,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, data);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1536,7 +1545,7 @@
ChannelBuffer txMessage =
prepareBgpNotification(errorCode, errorSubcode, null);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
}
/**
@@ -1602,7 +1611,7 @@
ChannelBuffer txMessage = prepareBgpNotificationBadMessageLength(
message.readableBytes() + BgpConstants.BGP_HEADER_LENGTH);
ctx.getChannel().write(txMessage);
- closeChannel(ctx);
+ closeSession(ctx);
return;
}