summaryrefslogtreecommitdiffhomepage
path: root/src/config.c
diff options
context:
space:
mode:
authorHans Dedecker <dedeckeh@gmail.com>2016-12-29 15:17:13 +0100
committerHans Dedecker <dedeckeh@gmail.com>2016-12-29 15:28:57 +0100
commitbf4ebc0bf37c0a0dce6143f8db70b0bef40332d2 (patch)
tree89e8f3cf6304fef78cdee0bd4aef72c4036c10d9 /src/config.c
parentc24782ada0932c25fd4063d4102670c79bbcf917 (diff)
config: use free_lease to delete a lease
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/config.c b/src/config.c
index daf583b..e3bf78a 100644
--- a/src/config.c
+++ b/src/config.c
@@ -162,6 +162,15 @@ static int mkdir_p(char *dir, mode_t mask)
return ret;
}
+static void free_lease(struct lease *l)
+{
+ if (l->head.next)
+ list_del(&l->head);
+
+ free(l->duid);
+ free(l);
+}
+
static struct interface* get_interface(const char *name)
{
struct interface *c;
@@ -323,10 +332,9 @@ static int set_lease(struct uci_section *s)
return 0;
err:
- if (lease) {
- free(lease->duid);
- free(lease);
- }
+ if (lease)
+ free_lease(lease);
+
return -1;
}
@@ -607,12 +615,8 @@ void odhcpd_reload(void)
{
struct uci_context *uci = uci_alloc_context();
- while (!list_empty(&leases)) {
- struct lease *l = list_first_entry(&leases, struct lease, head);
- list_del(&l->head);
- free(l->duid);
- free(l);
- }
+ while (!list_empty(&leases))
+ free_lease(list_first_entry(&leases, struct lease, head));
struct interface *master = NULL, *i, *n;