summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSander Vrijders <sander.vrijders@ugent.be>2017-08-29 18:34:26 +0200
committerSander Vrijders <sander.vrijders@ugent.be>2017-08-29 18:34:26 +0200
commit7d598d4a706e06e7e89218ca9ae071dd630cb2b3 (patch)
treea533c39bd42c9cbdb482ff210378b797c77b9e6e /src
parent706de5704f4d61929bbbb87d8d667ba68fcffc7d (diff)
downloadouroboros-7d598d4a706e06e7e89218ca9ae071dd630cb2b3.tar.gz
ouroboros-7d598d4a706e06e7e89218ca9ae071dd630cb2b3.zip
irmd: Fix deleting corrupt shm file
This will delete the rdrbuff also when it has been corrupted before. Otherwise the irmd won't start, as experienced on my desktop.
Diffstat (limited to 'src')
-rw-r--r--src/irmd/main.c2
-rw-r--r--src/lib/shm_rdrbuff.c12
2 files changed, 13 insertions, 1 deletions
diff --git a/src/irmd/main.c b/src/irmd/main.c
index 1d62de85..c5caff6c 100644
--- a/src/irmd/main.c
+++ b/src/irmd/main.c
@@ -2204,7 +2204,7 @@ static int irm_init(void)
if (kill(lockfile_owner(irmd.lf), 0) < 0) {
log_info("IRMd didn't properly shut down last time.");
- shm_rdrbuff_destroy(shm_rdrbuff_open());
+ shm_rdrbuff_purge();
log_info("Stale resources cleaned.");
lockfile_destroy(irmd.lf);
irmd.lf = lockfile_create();
diff --git a/src/lib/shm_rdrbuff.c b/src/lib/shm_rdrbuff.c
index d8893677..a3333a35 100644
--- a/src/lib/shm_rdrbuff.c
+++ b/src/lib/shm_rdrbuff.c
@@ -323,6 +323,18 @@ void shm_rdrbuff_close(struct shm_rdrbuff * rdrb)
free(rdrb);
}
+void shm_rdrbuff_purge(void)
+{
+ char * shm_rdrb_fn;
+
+ shm_rdrb_fn = rdrb_filename();
+ if (shm_rdrb_fn == NULL)
+ return;
+
+ shm_unlink(shm_rdrb_fn);
+ free(shm_rdrb_fn);
+}
+
void shm_rdrbuff_destroy(struct shm_rdrbuff * rdrb)
{
char * shm_rdrb_fn;