vcl:fix segfault when unshare NO_MQ session 21/33121/2
authorliuyacan <liuyacan@corp.netease.com>
Wed, 14 Jul 2021 07:53:01 +0000 (15:53 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Wed, 14 Jul 2021 14:33:00 +0000 (14:33 +0000)
Session in LISTEN_NO_MQ state has no vpp_evt_q.This
would cause a segfault when vcl try to send msg to
vpp.

Type: fix

Signed-off-by: liuyacan <liuyacan@corp.netease.com>
Change-Id: I0d21831dbed148cd1b0ca7c083aeeef9e813ef2f

src/vcl/vcl_locked.c

index e8f56c6..baacdd0 100644 (file)
@@ -710,7 +710,8 @@ vls_unshare_session (vcl_locked_session_t * vls, vcl_worker_t * wrk)
    *  Check if we can change owner or close
    */
   vls_shd->owner_wrk_index = vls_shd->workers_subscribed[0];
-  vcl_send_session_worker_update (wrk, s, vls_shd->owner_wrk_index);
+  if (s->session_state != VCL_STATE_LISTEN_NO_MQ)
+    vcl_send_session_worker_update (wrk, s, vls_shd->owner_wrk_index);
 
   /* XXX is this still needed? */
   if (vec_len (vls_shd->workers_subscribed) > 1)