vcl: switch to closed state after app close 99/24799/2
authorFlorin Coras <fcoras@cisco.com>
Tue, 4 Feb 2020 19:04:34 +0000 (19:04 +0000)
committerFlorin Coras <florin.coras@gmail.com>
Tue, 4 Feb 2020 19:12:36 +0000 (19:12 +0000)
Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I851db474538de76d5f70dd6d6f83a6487a5a02bd

src/vcl/ldp.c
src/vcl/vcl_private.h
src/vcl/vppcom.c

index 34eba37..d0cf2b9 100644 (file)
@@ -653,6 +653,7 @@ ldp_select_vcl_map_to_libc (clib_bitmap_t * vclb, fd_set * __restrict libcb)
   /* *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))
       {
index fd9d73c..f9fa066 100644 (file)
@@ -64,7 +64,7 @@ typedef enum
 
 typedef enum
 {
-  STATE_START = 0,
+  STATE_CLOSED = 0,
   STATE_CONNECT = 0x01,
   STATE_LISTEN = 0x02,
   STATE_ACCEPT = 0x04,
index 916ddf9..892d65c 100644 (file)
@@ -60,8 +60,8 @@ vppcom_session_state_str (vcl_session_state_t state)
 
   switch (state)
     {
-    case STATE_START:
-      st = "STATE_START";
+    case STATE_CLOSED:
+      st = "STATE_CLOSED";
       break;
 
     case STATE_CONNECT:
@@ -1220,7 +1220,7 @@ vppcom_session_create (u8 proto, u8 is_nonblocking)
   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 @@ vcl_session_cleanup (vcl_worker_t * wrk, vcl_session_t * session,
                                    session->vpp_handle, 0);
     }
 
+  session->session_state = STATE_CLOSED;
+
   /* Session is removed only after vpp confirms the disconnect */
   return rv;