[MESHLINK_ENOENT] = "No such node",
};
-const char *meshlink_strerror(meshlink_errno_t errno) {
- return errstr[errno];
+const char *meshlink_strerror(meshlink_errno_t err) {
+ if(err < 0 || err >= sizeof errstr / sizeof *errstr)
+ return "Invalid error code";
+ return errstr[err];
}
static bool ecdsa_keygen(meshlink_handle_t *mesh) {
}
void meshlink_close(meshlink_handle_t *mesh) {
- if(!mesh)
+ if(!mesh || !mesh->confbase)
return;
// Close and free all resources used.
free(mesh->name);
free(mesh->confbase);
- free(mesh);
-
memset(mesh, 0, sizeof *mesh);
+
+ free(mesh);
}
void meshlink_set_receive_cb(meshlink_handle_t *mesh, meshlink_receive_cb_t cb) {