summaryrefslogtreecommitdiff
path: root/src/ipcpd
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipcpd')
-rw-r--r--src/ipcpd/normal/dht.c10
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.");