vcl: switch to closed state after app close
Type: fix
Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I851db474538de76d5f70dd6d6f83a6487a5a02bd
diff --git a/src/vcl/ldp.c b/src/vcl/ldp.c
index 34eba37..d0cf2b9 100644
--- a/src/vcl/ldp.c
+++ b/src/vcl/ldp.c
@@ -653,6 +653,7 @@
/* *INDENT-OFF* */
clib_bitmap_foreach (si, vclb, ({
vlsh = vls_session_index_to_vlsh (si);
+ ASSERT (vlsh != VLS_INVALID_HANDLE);
fd = ldp_vlsh_to_fd (vlsh);
if (PREDICT_FALSE (fd < 0))
{
diff --git a/src/vcl/vcl_private.h b/src/vcl/vcl_private.h
index fd9d73c..f9fa066 100644
--- a/src/vcl/vcl_private.h
+++ b/src/vcl/vcl_private.h
@@ -64,7 +64,7 @@
typedef enum
{
- STATE_START = 0,
+ STATE_CLOSED = 0,
STATE_CONNECT = 0x01,
STATE_LISTEN = 0x02,
STATE_ACCEPT = 0x04,
diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c
index 916ddf9..892d65c 100644
--- a/src/vcl/vppcom.c
+++ b/src/vcl/vppcom.c
@@ -60,8 +60,8 @@
switch (state)
{
- case STATE_START:
- st = "STATE_START";
+ case STATE_CLOSED:
+ st = "STATE_CLOSED";
break;
case STATE_CONNECT:
@@ -1220,7 +1220,7 @@
session = vcl_session_alloc (wrk);
session->session_type = proto;
- session->session_state = STATE_START;
+ session->session_state = STATE_CLOSED;
session->vpp_handle = ~0;
session->is_dgram = vcl_proto_is_dgram (proto);
@@ -1309,6 +1309,8 @@
session->vpp_handle, 0);
}
+ session->session_state = STATE_CLOSED;
+
/* Session is removed only after vpp confirms the disconnect */
return rv;