diff options
author | Sander Vrijders <sander.vrijders@ugent.be> | 2017-08-30 13:29:18 +0200 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@ugent.be> | 2017-08-30 16:12:09 +0200 |
commit | a770296c7aa15057602a4e4f5c7744ccfc65b8aa (patch) | |
tree | befee04fa22eeb818d8710e44fa6a9b669a01745 /src/ipcpd/shim-data.c | |
parent | 521f5f0889bf7b56ade00395e0cfc0d4727dada5 (diff) | |
download | ouroboros-a770296c7aa15057602a4e4f5c7744ccfc65b8aa.tar.gz ouroboros-a770296c7aa15057602a4e4f5c7744ccfc65b8aa.zip |
ipcpd: Add check if name was already registered
This adds a check in the shims if a name was already registered, since
it should not return an error.
Diffstat (limited to 'src/ipcpd/shim-data.c')
-rw-r--r-- | src/ipcpd/shim-data.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/ipcpd/shim-data.c b/src/ipcpd/shim-data.c index 355cec68..2d6585b5 100644 --- a/src/ipcpd/shim-data.c +++ b/src/ipcpd/shim-data.c @@ -24,6 +24,10 @@ #include "config.h" +#define OUROBOROS_PREFIX "shim-data" + +#include <ouroboros/endian.h> +#include <ouroboros/logs.h> #include <ouroboros/list.h> #include <ouroboros/time_utils.h> #include <ouroboros/errno.h> @@ -260,9 +264,10 @@ static struct dir_entry * find_dir_entry_any(struct shim_data * data, } int shim_data_reg_add_entry(struct shim_data * data, - uint8_t * hash) + const uint8_t * hash) { struct reg_entry * entry; + uint8_t * hash_dup; assert(data); assert(hash); @@ -271,10 +276,18 @@ int shim_data_reg_add_entry(struct shim_data * data, if (find_reg_entry_by_hash(data, hash)) { pthread_rwlock_unlock(&data->reg_lock); + log_dbg(HASH_FMT " was already in the directory.", + HASH_VAL(hash)); + return 0; + } + + hash_dup = ipcp_hash_dup(hash); + if (hash_dup == NULL) { + pthread_rwlock_unlock(&data->reg_lock); return -1; } - entry = reg_entry_create(hash); + entry = reg_entry_create(hash_dup); if (entry == NULL) { pthread_rwlock_unlock(&data->reg_lock); return -1; |