From 19718b97ba13390ff5f2b7453d0297e936db5653 Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Tue, 9 May 2017 14:31:15 +0200 Subject: irmd: Fix unbinding AP and AP-Is from a name APs and AP-Is were not removed from the registry entry for that name. Reported by: loic.vervaeke@ugent.be Tested by: loic.vervaeke@ugent.be --- src/irmd/main.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/irmd/main.c') diff --git a/src/irmd/main.c b/src/irmd/main.c index c9c989c5..3331c754 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -630,6 +630,8 @@ static int bind_api(pid_t api, static int unbind_ap(char * ap, char * name) { + struct reg_entry * e; + if (ap == NULL) return -EINVAL; @@ -642,6 +644,10 @@ static int unbind_ap(char * ap, apn_entry_del_name(e, name); } + e = registry_get_entry(&irmd.registry, name); + if (e != NULL) + reg_entry_del_apn(e, ap); + pthread_rwlock_unlock(&irmd.reg_lock); if (name == NULL) @@ -652,9 +658,11 @@ static int unbind_ap(char * ap, return 0; } -static int unbind_api(pid_t api, - char * name) +static int unbind_api(pid_t api, + const char * name) { + struct reg_entry * e; + pthread_rwlock_wrlock(&irmd.reg_lock); if (name == NULL) @@ -664,6 +672,10 @@ static int unbind_api(pid_t api, api_entry_del_name(e, name); } + e = registry_get_entry(&irmd.registry, name); + if (e != NULL) + reg_entry_del_api(e, api); + pthread_rwlock_unlock(&irmd.reg_lock); if (name == NULL) -- cgit v1.2.3