diff options
author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2025-08-24 10:23:47 +0200 |
---|---|---|
committer | Dimitri Staessens <dimitri@ouroboros.rocks> | 2025-08-24 10:23:47 +0200 |
commit | e75861147fdf99509c699f47efffdb9a2966697a (patch) | |
tree | e2649d6211c43896e0e0a34fc6ae47f7a5f9bce3 /src/ipcpd/unicast/dir/dht.c | |
parent | 89dba35fc0f22d7ceaeb171e7a50d86ed5848d57 (diff) | |
download | ouroboros-e75861147fdf99509c699f47efffdb9a2966697a.tar.gz ouroboros-e75861147fdf99509c699f47efffdb9a2966697a.zip |
ipcpd: Fix missing return in DHTbe
The dht_kv_respond_req had a missing return statement. I'm not sure
why the double mutex_unlock() never caused havoc in testing.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Diffstat (limited to 'src/ipcpd/unicast/dir/dht.c')
-rw-r--r-- | src/ipcpd/unicast/dir/dht.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ipcpd/unicast/dir/dht.c b/src/ipcpd/unicast/dir/dht.c index 858fad0b..6b06def9 100644 --- a/src/ipcpd/unicast/dir/dht.c +++ b/src/ipcpd/unicast/dir/dht.c @@ -1353,7 +1353,7 @@ static int dht_kv_respond_req(uint8_t * key, req = __dht_kv_req_get_req(key); if (req == NULL) { - log_warn(KEY_FMT " Failed to find req.", KEY_VAL(key)); + log_dbg(KEY_FMT " Failed to find req.", KEY_VAL(key)); goto fail_req; } @@ -1375,6 +1375,8 @@ static int dht_kv_respond_req(uint8_t * key, pthread_cond_broadcast(&dht.reqs.cond); pthread_mutex_unlock(&dht.reqs.mtx); + + return 0; fail_req: pthread_mutex_unlock(&dht.reqs.mtx); return -1; @@ -3058,7 +3060,9 @@ static void do_dht_kv_find_value_rsp(const dht_find_node_rsp_msg_t * node, if (val->n_values > 0) { log_dbg(KEY_FMT " %zd new values received.", KEY_VAL(key), val->n_values); - dht_kv_respond_req(key, val->values, val->n_values); + if (dht_kv_respond_req(key, val->values, val->n_values) < 0) + log_warn(KEY_FMT " Failed to respond to request.", + KEY_VAL(key)); peer_list_destroy(&pl); return; /* done! */ } |