vcl session: propagate cleanup notifications to apps
[vpp.git] / src / plugins / hs_apps / sapi / vpp_echo.c
index 0550006..12be1f9 100644 (file)
@@ -498,6 +498,8 @@ session_unlisten_handler (session_unlisten_reply_msg_t * mp)
   echo_main_t *em = &echo_main;
 
   ls = echo_get_session_from_handle (em, mp->handle);
+  if (!ls)
+    return;
   em->proto_cb_vft->cleanup_cb (ls, 0 /* parent_died */ );
   ls->session_state = ECHO_SESSION_STATE_CLOSED;
   if (--em->listen_session_cnt == 0)
@@ -783,6 +785,12 @@ del_segment_handler (session_app_del_segment_msg_t * mp)
   ECHO_LOG (2, "Unmaped segment 0x%lx", mp->segment_handle);
 }
 
+static void
+cleanup_handler (session_cleanup_msg_t * mp)
+{
+  ECHO_LOG (1, "Cleanup confirmed for 0x%lx", mp->handle);
+}
+
 static void
 handle_mq_event (session_event_t * e)
 {
@@ -808,6 +816,9 @@ handle_mq_event (session_event_t * e)
     case SESSION_CTRL_EVT_APP_DEL_SEGMENT:
       del_segment_handler ((session_app_del_segment_msg_t *) e->data);
       break;
+    case SESSION_CTRL_EVT_CLEANUP:
+      cleanup_handler ((session_cleanup_msg_t *) e->data);
+      break;
     case SESSION_IO_EVT_RX:
       break;
     default: