api: fix sock reg passing on read event
[vpp.git] / src / vlibmemory / vlib_api.c
index afc2e40..5494da3 100644 (file)
@@ -385,9 +385,16 @@ vl_api_clnt_process (vlib_main_t * vm, vlib_node_runtime_t * node,
        case SOCKET_READ_EVENT:
          for (i = 0; i < vec_len (event_data); i++)
            {
+             vl_api_registration_t *regp;
+
              a = pool_elt_at_index (socket_main.process_args, event_data[i]);
-             vl_socket_process_api_msg (a->clib_file, a->regp,
-                                        (i8 *) a->data);
+             regp = vl_socket_get_registration (a->reg_index);
+             if (regp)
+               {
+                 vl_socket_process_api_msg (regp, (i8 *) a->data);
+                 a = pool_elt_at_index (socket_main.process_args,
+                                        event_data[i]);
+               }
              vec_free (a->data);
              pool_put (socket_main.process_args, a);
            }