diff options
author | Dimitri Staessens <dimitri.staessens@ugent.be> | 2018-05-01 13:19:24 +0200 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@ugent.be> | 2018-05-03 10:27:39 +0200 |
commit | b15d12f7154e80674093597697ffc6af5a4230bf (patch) | |
tree | 5199a869b80210694b5c158fff93e02698502b08 /src/ipcpd | |
parent | f98a17855f20018b6a4635e26bae8c820eb192d2 (diff) | |
download | ouroboros-b15d12f7154e80674093597697ffc6af5a4230bf.tar.gz ouroboros-b15d12f7154e80674093597697ffc6af5a4230bf.zip |
ipcpd: Shut down DHT gracefully during enrollment
The DHT has a thread that continued to run during shutdown. The
shutdown state is now checked for. It will not try to send messages at
shutdown.
Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
Diffstat (limited to 'src/ipcpd')
-rw-r--r-- | src/ipcpd/normal/dht.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/ipcpd/normal/dht.c b/src/ipcpd/normal/dht.c index a3f6308c..f90f95e4 100644 --- a/src/ipcpd/normal/dht.c +++ b/src/ipcpd/normal/dht.c @@ -2579,6 +2579,11 @@ static void dht_post_sdu(void * comp, struct cmd * cmd; struct dht * dht = (struct dht *) comp; + if (dht_get_state(dht) == DHT_SHUTDOWN) { + ipcp_sdb_release(sdb); + return; + } + cmd = malloc(sizeof(*cmd)); if (cmd == NULL) { log_err("Command failed. Out of memory."); @@ -2666,6 +2671,11 @@ static void * join_thr(void * o) assert(info); while (kad_join(info->dht, info->addr)) { + if (dht_get_state(info->dht) == DHT_SHUTDOWN) { + log_dbg("DHT enrollment aborted."); + goto finish; + } + if (retr++ == KAD_JOIN_RETR) { dht_set_state(info->dht, DHT_INIT); log_warn("DHT enrollment attempt failed."); |