diff options
author | Florin Coras <fcoras@cisco.com> | 2019-12-12 12:01:24 -0800 |
---|---|---|
committer | Florin Coras <fcoras@cisco.com> | 2019-12-12 12:06:16 -0800 |
commit | 64cf459bc9353935a72c3e37892b7b7444029795 (patch) | |
tree | 1dcf9fa2c4b06350de3b9f0b135515a29e748bc2 /src/vcl/vcl_private.c | |
parent | 6d5df8d22971280c8a22b0d96656f4922fe06d56 (diff) |
vcl: fix disconnect from binary api
Type: fix
Change-Id: I4398d26879b5efd932fa1d9ae232aa918ec736d6
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vcl/vcl_private.c')
-rw-r--r-- | src/vcl/vcl_private.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vcl/vcl_private.c b/src/vcl/vcl_private.c index b14fdeea454..6e887c878cd 100644 --- a/src/vcl/vcl_private.c +++ b/src/vcl/vcl_private.c @@ -158,11 +158,19 @@ vcl_worker_cleanup (vcl_worker_t * wrk, u8 notify_vpp) clib_spinlock_lock (&vcm->workers_lock); if (notify_vpp) { + /* Notify vpp that the worker is going away */ if (wrk->wrk_index == vcl_get_worker_index ()) vcl_send_app_worker_add_del (0 /* is_add */ ); else vcl_send_child_worker_del (wrk); + + /* Disconnect the binary api */ + if (vec_len (vcm->workers) == 1) + vppcom_disconnect_from_vpp (); + else + vl_client_send_disconnect (1 /* vpp should cleanup */ ); } + if (wrk->mqs_epfd > 0) close (wrk->mqs_epfd); hash_free (wrk->session_index_by_vpp_handles); |