session: segment manager refactor
[vpp.git] / src / vnet / session / application_interface.c
index 63666a6..efdd3dd 100644 (file)
@@ -406,7 +406,7 @@ vnet_application_attach (vnet_app_attach_args_t * a)
 
   a->app_event_queue_address = pointer_to_uword (app->event_queue);
   sm = segment_manager_get (app->first_segment_manager);
-  fs = segment_manager_get_segment (sm->segment_indices[0]);
+  fs = segment_manager_get_segment_w_lock (sm, 0);
 
   if (application_is_proxy (app))
     application_setup_proxy (app);
@@ -415,6 +415,8 @@ vnet_application_attach (vnet_app_attach_args_t * a)
   a->segment = &fs->ssvm;
   a->app_index = app->index;
 
+  segment_manager_segment_reader_unlock (sm);
+
   return 0;
 }
 
@@ -500,8 +502,7 @@ vnet_disconnect_session (vnet_disconnect_args_t * a)
   /* We're peeking into another's thread pool. Make sure */
   ASSERT (s->session_index == index);
 
-  session_send_session_evt_to_thread (a->handle, FIFO_EVENT_DISCONNECT,
-                                     thread_index);
+  stream_session_disconnect (s);
   return 0;
 }