X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsegment_manager.c;h=63af299e9a848560bcb0e34173215ac6a4f32d04;hb=2b81e3cba77e6427b47228318d55e40a859d02d1;hp=8e6c2818a205ef44bf10fb431f2be7bca3b015ab;hpb=038243064ba0a6b587213ba56fffd9e3fddcf0ee;p=vpp.git diff --git a/src/vnet/session/segment_manager.c b/src/vnet/session/segment_manager.c index 8e6c2818a20..63af299e9a8 100644 --- a/src/vnet/session/segment_manager.c +++ b/src/vnet/session/segment_manager.c @@ -16,7 +16,6 @@ #include #include #include -#include segment_manager_main_t segment_manager_main; @@ -380,6 +379,7 @@ void segment_manager_del_sessions (segment_manager_t * sm) { svm_fifo_segment_private_t *fifo_segment; + session_handle_t *handles = 0, *handle; session_t *session; svm_fifo_t *fifo; @@ -398,16 +398,11 @@ segment_manager_del_sessions (segment_manager_t * sm) while (fifo) { if (fifo->ct_session_index != SVM_FIFO_INVALID_SESSION_INDEX) - { - svm_fifo_t *next = fifo->next; - app_worker_local_session_disconnect_w_index (sm->app_wrk_index, - fifo->ct_session_index); - fifo = next; - continue; - } - session = session_get (fifo->master_session_index, - fifo->master_thread_index); - session_close (session); + session = session_get (fifo->ct_session_index, 0); + else + session = session_get (fifo->master_session_index, + fifo->master_thread_index); + vec_add1 (handles, session_handle (session)); fifo = fifo->next; } @@ -416,6 +411,9 @@ segment_manager_del_sessions (segment_manager_t * sm) */ })); /* *INDENT-ON* */ + + vec_foreach (handle, handles) + session_close (session_get_from_handle (*handle)); } /** @@ -553,9 +551,10 @@ alloc_check: if (added_a_segment) { + app_worker_t *app_wrk; segment_handle = segment_manager_segment_handle (sm, fifo_segment); - rv = app_worker_add_segment_notify (sm->app_wrk_index, - segment_handle); + app_wrk = app_worker_get (sm->app_wrk_index); + rv = app_worker_add_segment_notify (app_wrk, segment_handle); } /* Drop the lock after app is notified */ segment_manager_segment_reader_unlock (sm);