summaryrefslogtreecommitdiff
path: root/src/ipcpd/normal/pol/flat.c
diff options
context:
space:
mode:
authorSander Vrijders <sander.vrijders@intec.ugent.be>2016-12-06 14:50:52 +0100
committerSander Vrijders <sander.vrijders@intec.ugent.be>2016-12-06 14:51:37 +0100
commita4031fa3d1eb63c1ff83ba37e5e89d6b1a7d5d04 (patch)
tree841b7c48c047afc1ad2bc44999158e0bdf657a9e /src/ipcpd/normal/pol/flat.c
parent82ae7959d21c654fe9fd14de504f47d18b1ebcfc (diff)
downloadouroboros-a4031fa3d1eb63c1ff83ba37e5e89d6b1a7d5d04.tar.gz
ouroboros-a4031fa3d1eb63c1ff83ba37e5e89d6b1a7d5d04.zip
ipcpd: normal: Fix errors on IPCP shutdown
This fixes several bad cleanups in the normal IPCP when it is shutting down.
Diffstat (limited to 'src/ipcpd/normal/pol/flat.c')
-rw-r--r--src/ipcpd/normal/pol/flat.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/ipcpd/normal/pol/flat.c b/src/ipcpd/normal/pol/flat.c
index 06958222..7d489dd5 100644
--- a/src/ipcpd/normal/pol/flat.c
+++ b/src/ipcpd/normal/pol/flat.c
@@ -163,15 +163,17 @@ int flat_init(void)
return -1;
}
- if (ro_create(name, &rattr, NULL, 0)) {
- LOG_ERR("Could not create RO.");
- pathname_destroy(name);
- pthread_cond_destroy(&flat.cond);
- pthread_mutex_destroy(&flat.lock);
- ro_unsubscribe(flat.sid);
- return -1;
+ if (!ro_exists(name)) {
+ rattr.enrol_sync = true;
+ if (ro_create(name, &rattr, NULL, 0)) {
+ LOG_ERR("Could not create RO.");
+ pathname_destroy(name);
+ pthread_cond_destroy(&flat.cond);
+ pthread_mutex_destroy(&flat.lock);
+ ro_unsubscribe(flat.sid);
+ return -1;
+ }
}
-
pathname_destroy(name);
return 0;