diff --git a/guestfs-inspectd.c b/guestfs-inspectd.c index b4ff5fa..448093c 100644 --- a/guestfs-inspectd.c +++ b/guestfs-inspectd.c @@ -126,8 +126,8 @@ static void worker_task(zsock_t *pipe, char *disk_path) { free(res); break; default: - zmsg_pushstr(reply, "Unknown command"); - break; + zmsg_pushstr(reply, "Unknown command"); + break; } // Sending reply @@ -151,6 +151,7 @@ typedef struct { zactor_t *worker; } zactor_worker_map; +char *strdup(const char *); void mapping_zactor_worker(char *name, zactor_t *worker, zactor_worker_map **map, size_t mapper_size) { map[mapper_size - 1] = malloc(sizeof(zactor_worker_map)); @@ -162,11 +163,9 @@ void mapping_zactor_worker(char *name, zactor_t *worker, zactor_worker_map **map zactor_t * zactor_worker_lookup(char *name, zactor_worker_map **map, size_t mapper_size) { size_t i = 0; - printf("inside lookup::%zu\n", mapper_size); for (i = 0; i < mapper_size; i++) { if (strcmp((*map[i]).name, name) == 0) { - printf("found at %zu\n", i); - printf("found %p\n", map[i]->worker); + //printf("found %p\n", map[i]->worker); return map[i]->worker; } } @@ -181,7 +180,7 @@ int main(int argc, char **argv) { // Zactor setup size_t worker_map_size = 0; - zactor_worker_map **worker_map = malloc(sizeof(zactor_worker_map *) * worker_map_size); + zactor_worker_map **worker_map = NULL; for (int i = 0; i < argc - 1; i++) { worker_map_size++; @@ -194,6 +193,10 @@ int main(int argc, char **argv) { mapping_zactor_worker(name, zactor_new((void *)worker_task, path), worker_map, worker_map_size); } + if (worker_map == NULL) { + exit(EXIT_FAILURE); + } + // Setup daemon ipc endpoint char *ep = guestfs_inspect_endpoint(); printf("ep: %s\n", ep); @@ -247,7 +250,14 @@ int main(int argc, char **argv) { zmsg_destroy(&msg); } } - //zactor_destroy(&worker); + + // Cleanup + for (int i = 0; i < worker_map_size; i++) { + zactor_destroy(&worker_map[i]->worker); + free(worker_map[i]); + } + free(worker_map); + return EXIT_SUCCESS; }