* are closed. The alternative is to walk through all connections
* for each client, which would be a long time.
*/
-static int count_connections(void *ctx, UNUSED uint8_t const *key, UNUSED int keylen, void *data)
+static int count_connections(void *ctx, UNUSED uint8_t const *key, UNUSED size_t keylen, void *data)
{
fr_io_client_t *client = data;
int connections;
* - <0 on error
* - 0 on success
*/
-int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void *data)
+int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void const *data)
{
fr_trie_user_t *user;
user = talloc_zero(ft, fr_trie_user_t);
if (!user) return -1;
- user->data = data;
+ memcpy(&user->data, &data, sizeof(user->data));
user->number = ft->number++;
if (fr_trie_key_insert(ft, ft, &ft->trie, key, 0, keylen, PUT_USER(user)) < 0) {
#include <talloc.h>
typedef struct fr_trie_t fr_trie_t;
-typedef int (*fr_trie_walk_t)(void *ctx, uint8_t const *key, int keylen, void *data);
+typedef int (*fr_trie_walk_t)(void *ctx, uint8_t const *key, size_t keylen, void *data);
fr_trie_t *fr_trie_alloc(TALLOC_CTX *ctx);
-int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void *data) CC_HINT(nonnull);
+int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void const *data) CC_HINT(nonnull);
void *fr_trie_lookup(fr_trie_t const *ft, void const *key, size_t keylen) CC_HINT(nonnull);
void *fr_trie_match(fr_trie_t const *ft, void const *key, size_t keylen) CC_HINT(nonnull);
void *fr_trie_remove(fr_trie_t *ft, void const *key, size_t keylen) CC_HINT(nonnull);