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 */