X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=service%2Fvalidate.c;h=6a449f43bd875d3809aeab707d211cd932291d27;hp=ca9bb393c6c3f40e3ff79fcc48982d6d1f7d7ad2;hb=dfd5816bcbef980b11c8a286f8f52a434651c528;hpb=916f95cb58604038695347ee41a430d8ca1f0556 diff --git a/service/validate.c b/service/validate.c index ca9bb39..6a449f4 100644 --- a/service/validate.c +++ b/service/validate.c @@ -13,6 +13,7 @@ #include #include +#include #include "../procd.h" @@ -52,12 +53,12 @@ service_validate_dump_all(struct blob_buf *b, char *p, char *s) if (s && strcmp(s, v->type)) continue; - o = json_object_object_get(r, v->package); + json_object_object_get_ex(r, v->package, &o); if (!o) { o = json_object_new_object(); json_object_object_add(r, v->package, o); } - t = json_object_object_get(o, v->type); + json_object_object_get_ex(o, v->type, &t); if (!t) { t = json_object_new_object(); json_object_object_add(o, v->type, t); @@ -66,6 +67,7 @@ service_validate_dump_all(struct blob_buf *b, char *p, char *s) json_object_object_add(t, vr->option, json_object_new_string(vr->rule)); } blobmsg_add_object(b, r); + json_object_put(r); } void @@ -100,10 +102,9 @@ service_validate_del(struct service *s) list_for_each_entry_safe(v, n, &s->validators, list) { struct vrule *vr, *a; - avl_for_each_element_safe(&v->rules, vr, avl, a) { - avl_delete(&v->rules, &vr->avl); + avl_remove_all_elements(&v->rules, vr, avl, a) free(vr); - } + avl_delete(&validators, &v->avl); list_del(&v->list); free(v);