diff --git a/include/ipfs/repo/config/config.h b/include/ipfs/repo/config/config.h index 6911a2f..45c690d 100644 --- a/include/ipfs/repo/config/config.h +++ b/include/ipfs/repo/config/config.h @@ -74,4 +74,11 @@ int config_path(char* config_root, char* extension, char* result, int max_len); */ int repo_config_init(struct RepoConfig* config, unsigned int num_bits_for_keypair, char* repo_path); +/*** + * free all resources that were allocated to store config information + * @param config the config + * @returns true(1) + */ +int repo_config_free(struct RepoConfig* config); + #endif diff --git a/repo/config/addresses.c b/repo/config/addresses.c index c9c3959..c31d0f6 100644 --- a/repo/config/addresses.c +++ b/repo/config/addresses.c @@ -32,5 +32,6 @@ int repo_config_addresses_init(struct Addresses* addresses, char* api, char* gat int repo_config_addresses_free(struct Addresses* addresses) { free(addresses->api); free(addresses->gateway); + repo_config_swarm_address_free(&(addresses->swarm)); return 1; } diff --git a/repo/config/base64.c b/repo/config/base64.c index ab0a93a..5807f80 100644 --- a/repo/config/base64.c +++ b/repo/config/base64.c @@ -7,6 +7,7 @@ // #include +#include "mbedtls/base64.h" /** * encode using base64 diff --git a/repo/config/config.c b/repo/config/config.c index d8c57b5..1daac05 100644 --- a/repo/config/config.c +++ b/repo/config/config.c @@ -134,3 +134,14 @@ int repo_config_init(struct RepoConfig* config, unsigned int num_bits_for_keypai return 1; } +int repo_config_free(struct RepoConfig* config) { + repo_config_bootstrap_peers_free(&(config->peer_addresses)); + repo_config_datastore_free(&(config->datastore)); + repo_config_addresses_free(&(config->addresses)); + return 1; +} + +int repo_config_martial_to_json(struct RepoConfig* config) { + return 0; +} + diff --git a/repo/fsrepo/fs_repo.c b/repo/fsrepo/fs_repo.c index 5ca81ca..69044c3 100644 --- a/repo/fsrepo/fs_repo.c +++ b/repo/fsrepo/fs_repo.c @@ -100,6 +100,9 @@ int fs_repo_open(char* repo_path, struct FSRepo* repo) { //TODO: lock // get the path set in the repo struct int retVal = repo_new_fs_repo(repo_path, repo); + if (retVal == 0) + return 0; + // check if initialized if (!repo_check_initialized(repo->path)) return 0; diff --git a/test/repo/test_repo_config.h b/test/repo/test_repo_config.h index d33cfff..fff3b5b 100644 --- a/test/repo/test_repo_config.h +++ b/test/repo/test_repo_config.h @@ -16,6 +16,7 @@ int test_repo_config_init() { int retVal = repo_config_init(&repoConfig, 2048, "/Users/JohnJones/.ipfs"); if (retVal == 0) return 0; + // now tear it apart to check for anything broken // addresses @@ -31,6 +32,8 @@ int test_repo_config_init() { if (retVal != 0) return 0; + repo_config_free(&repoConfig); + return 1; }