diff --git a/src/net/listen.c b/src/net/listen.c index 229055faadfb147ef1a79ffc0ba969cb7e4489e2..a252d5176d675d3a1ef88cca866608f77d86f66d 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -63,6 +63,18 @@ cmd_trie_new(void) return ret; } +PRIVATE_FUNCTION void +cmd_trie_free(struct cmd_trie_node *root) +{ + for (size_t i = 0; i < CHARS_MAX; ++i) { + if (root->children[i] != NULL) { + cmd_trie_free(root->children[i]); + } + } + + free(root); +} + PRIVATE_FUNCTION void cmd_trie_insert(struct cmd_trie_node *root, const char *signed_cmd_name, void (*cmd_ptr)(void), LKT_COMMAND_TYPE cmd_type) @@ -204,6 +216,7 @@ cmd_trie_print(struct cmd_trie_node *root) CONSTRUCTOR_FUNCTION ___cmd_trie_init(void) { + LOG_INFO("CMD_TRIE", "Init the command trie"); cmd_trie_root = cmd_trie_new(); cmd_trie_insert(cmd_trie_root, "next", FUNCTION_POINTER(command_next), LKT_COMMAND_SIMPLE); cmd_trie_print(cmd_trie_root); @@ -212,6 +225,8 @@ ___cmd_trie_init(void) DESTRUCTOR_FUNCTION ___cmd_trie_deinit(void) { + LOG_INFO("CMD_TRIE", "Free the command trie"); + cmd_trie_free(cmd_trie_root); } /* Client structure */