diff options
author | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-08-26 16:52:45 +0200 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-08-26 16:52:45 +0200 |
commit | da0739d8dea1235a047095c08cfe67871c3c216e (patch) | |
tree | d3a68ba74bd6cc5dc366649d6e29b15d697fc348 /src/irmd | |
parent | 84f0f1a64fa2beb00abf30d00072d4f818cf9bd4 (diff) | |
parent | 7fd43a33c5964fcf0f8de2efc9dbf27f8db25fc4 (diff) | |
download | ouroboros-da0739d8dea1235a047095c08cfe67871c3c216e.tar.gz ouroboros-da0739d8dea1235a047095c08cfe67871c3c216e.zip |
Merged in dstaesse/ouroboros/be-bugfixing (pull request #227)
Be bugfixing
Diffstat (limited to 'src/irmd')
-rw-r--r-- | src/irmd/main.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/irmd/main.c b/src/irmd/main.c index 5f793afd..cd939360 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -1548,6 +1548,20 @@ static void irm_destroy() if (irmd->threadpool != NULL) free(irmd->threadpool); + pthread_rwlock_wrlock(&irmd->flows_lock); + + list_for_each_safe(p, h, &irmd->irm_flows) { + struct irm_flow * f = list_entry(p, struct irm_flow, next); + list_del(&f->next); + ipcp_flow_dealloc(f->n_1_api, f->port_id); + irm_flow_destroy(f); + } + + close(irmd->sockfd); + + if (unlink(IRM_SOCK_PATH)) + LOG_DBG("Failed to unlink %s.", IRM_SOCK_PATH); + pthread_rwlock_wrlock(&irmd->reg_lock); /* clear the lists */ list_for_each_safe(p, h, &irmd->ipcps) { @@ -1585,14 +1599,6 @@ static void irm_destroy() pthread_rwlock_unlock(&irmd->reg_lock); - pthread_rwlock_wrlock(&irmd->flows_lock); - - list_for_each_safe(p, h, &irmd->irm_flows) { - struct irm_flow * f = list_entry(p, struct irm_flow, next); - list_del(&f->next); - irm_flow_destroy(f); - } - if (irmd->port_ids != NULL) bmp_destroy(irmd->port_ids); @@ -1604,11 +1610,6 @@ static void irm_destroy() if (irmd->lf != NULL) lockfile_destroy(irmd->lf); - close(irmd->sockfd); - - if (unlink(IRM_SOCK_PATH)) - LOG_DBG("Failed to unlink %s.", IRM_SOCK_PATH); - pthread_rwlock_unlock(&irmd->state_lock); pthread_rwlock_destroy(&irmd->reg_lock); |