summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2021-07-20 19:08:12 -0700
committerDave Barach <openvpp@barachs.net>2021-07-21 23:41:16 +0000
commitc941fcbc783bc83461422a3f975d24a5c0ef6a77 (patch)
tree910d9df792ad42bba8086054454a6efe37b91dff
parente71aeab3926485ee42d185483f8fe5bffe4693bf (diff)
session: fix unlisten rpc barrier release
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I9301fbbcd611033b4b6ad5313edbc66840f5bb3a
-rw-r--r--src/vnet/session/session_node.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c
index 8817b08f3d2..b8b5ce2d8de 100644
--- a/src/vnet/session/session_node.c
+++ b/src/vnet/session/session_node.c
@@ -401,8 +401,6 @@ session_mq_unlisten_rpc (session_unlisten_msg_t *mp)
sh = mp->handle;
context = mp->context;
- vlib_worker_thread_barrier_sync (vm);
-
app = application_lookup (mp->client_index);
if (!app)
return;
@@ -411,15 +409,18 @@ session_mq_unlisten_rpc (session_unlisten_msg_t *mp)
a->app_index = app->app_index;
a->handle = sh;
a->wrk_map_index = mp->wrk_index;
+
+ vlib_worker_thread_barrier_sync (vm);
+
if ((rv = vnet_unlisten (a)))
clib_warning ("unlisten returned: %d", rv);
+ vlib_worker_thread_barrier_release (vm);
+
app_wrk = application_get_worker (app, a->wrk_map_index);
if (!app_wrk)
return;
- vlib_worker_thread_barrier_release (vm);
-
mq_send_unlisten_reply (app_wrk, sh, context, rv);
clib_mem_free (mp);
}