api: Fix reaper functions for socket clients 30/34730/2
authorNeale Ranns <neale@graphiant.com>
Wed, 15 Dec 2021 12:59:26 +0000 (12:59 +0000)
committerOle Tr�an <otroan@employees.org>
Thu, 16 Dec 2021 10:22:35 +0000 (10:22 +0000)
Type: fix

The pub_sub_handler() stores registrations key'd with the message's client_index (which is in network-order).
The socket-client invokes the reaper function (to cleanup these registrations) using the pool index of the registration. hence the pub-sub registration is not removed.
change the socket-client to pass the network-order client_index.
This approach was chosen in preference to chaning the way the registrations are key'd since the memory-client also uses this registration, and correclty passes the client_index to the reaper.

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I6118555c8601149d05801f558e08bcc7aed4fc98

src/vlibmemory/socket_api.c

index 3e3f7d5..9f9773e 100644 (file)
@@ -183,7 +183,8 @@ vl_socket_free_registration_index (u32 pool_index)
     }
   rp = pool_elt_at_index (socket_main.registration_pool, pool_index);
 
-  vl_api_call_reaper_functions (pool_index);
+  vl_api_call_reaper_functions (
+    clib_host_to_net_u32 (sock_api_registration_handle (rp)));
 
   ASSERT (rp->registration_type != REGISTRATION_TYPE_FREE);
   for (i = 0; i < vec_len (rp->additional_fds_to_close); i++)