socket api: multiple fds in one msg
[vpp.git] / src / tests / vnet / session / tcp_echo.c
index 6e41e4b..6a5d8c4 100644 (file)
@@ -353,7 +353,7 @@ memfd_segment_attach (void)
   clib_error_t *error;
   int rv;
 
-  if ((error = vl_socket_client_recv_fd_msg (&ssvm->fd, 5)))
+  if ((error = vl_socket_client_recv_fd_msg (&ssvm->fd, 1, 5)))
     {
       clib_error_report (error);
       return -1;
@@ -379,7 +379,7 @@ fifo_segment_attach (char *name, u32 size, ssvm_segment_type_t type)
 
   if (type == SSVM_SEGMENT_MEMFD)
     {
-      if ((error = vl_socket_client_recv_fd_msg (&a->memfd_fd, 5)))
+      if ((error = vl_socket_client_recv_fd_msg (&a->memfd_fd, 1, 5)))
        {
          clib_error_report (error);
          return -1;
@@ -881,20 +881,16 @@ session_disconnected_handler (session_disconnected_msg_t * mp)
   int rv = 0;
 
   p = hash_get (em->session_index_by_vpp_handles, mp->handle);
-
-  if (p)
-    {
-      clib_warning ("disconnected");
-      session = pool_elt_at_index (em->sessions, p[0]);
-      hash_unset (em->session_index_by_vpp_handles, mp->handle);
-      pool_put (em->sessions, session);
-    }
-  else
+  if (!p)
     {
       clib_warning ("couldn't find session key %llx", mp->handle);
-      rv = -11;
+      return;
     }
 
+  session = pool_elt_at_index (em->sessions, p[0]);
+  hash_unset (em->session_index_by_vpp_handles, mp->handle);
+  pool_put (em->sessions, session);
+
   app_alloc_ctrl_evt_to_vpp (session->vpp_evt_q, app_evt,
                             SESSION_CTRL_EVT_DISCONNECTED_REPLY);
   rmp = (session_disconnected_reply_msg_t *) app_evt->evt->data;
@@ -903,8 +899,7 @@ session_disconnected_handler (session_disconnected_msg_t * mp)
   rmp->context = mp->context;
   app_send_ctrl_evt_to_vpp (session->vpp_evt_q, app_evt);
 
-  if (session)
-    session_print_stats (em, session);
+  session_print_stats (em, session);
 }
 
 static void