summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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;